using System; // like python, need to import sys,os for some basic function int i = 1; // like c++, statement needs ends with ; const int age = 100; float amount = 1; float amountDetail = 1.2f; // for . number, you need put f behind; double noNeedEnd = 1.2; // for double, no need extra, opt with d; decimal superDetail = 1.2m; // m to indicate deciMal char letter = 'A'; string name = "test"; book isWorking; var i=1; // like javascript, you can use var for c# to auto detect as int for the value. int[] intArray = {5,2,3}; // fix size array, unlike mixed python intArrayExtra=[5,2,3,'ok'] int[] intEmpty = new int[3]; // 3 slot Array.Sort(intArray); foreach (int i in intArray) { Console.WriteLine(i); } // extra lib using System.Linq; Console.WriteLine("max: "+intArray.Max()); Console.WriteLine("min: {0}; sum: {1} ", intArray.Min(), intArray.Sum()); // python .format like print // python like list, no fix size, need extra lib using System.Collections.Generic; List<int> numberList = new List<int>(); numberList.Add(32); // like python append // write out list as string Console.WriteLine( string.Join(", ", selected.ToArray() ) int[] extraArray = {10,11,12}; numberList.AddRange(extraArray); // like python extend numberList.Insert(0, 100); // insert at index numberList.Remove(10); // find number 10 and remove 1st instance numberList.RemoveAt(3); // Remove 3rd item numberList.Clear(); // empty, like python .clear() numberList.IndexOf(100); // numberList.Sort(); numberList.Reverse(); int index = numberList.BinarySearch(100); // python like: stack ; append(56), pop(), use Stack object instead if(numberList.Any()){ numberList.RemoveAt(numberList.Count - 1); // no return though } // python like: queue; append(56), pop(0), use Queue object instead numberList.RemoveAt(0); // no return though // however, apart from List, // c# has Queue object for Enqueue() and Dequeue(), // c# has Stack object for Push() and Pop() // c# extra: SortedSet, HashSet
using System; public DateTime UnixTimeStampToDateTime(double unixTimeStamp) { // Unix timestamp is seconds past epoch DateTime dateTime = new DateTime(1970, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc); dateTime = dateTime.AddSeconds(unixTimeStamp).ToLocalTime(); return dateTime; }
action | shortcut |
---|---|
move line up/dn | alt+arrow up/dn |
comment | cmd+/ |
mono AppName.exe
macpack -m:cocoa -o:./App -n AppName -a:AppName.exe
Problem and Solution
mcs -pkg:gtk-sharp-2.0 AppName.cs AppNameExtra.cs
mono AppName.exe
#!/bin/sh # auto launch Mono App on Mac by ying # v0.1 (2022.04.04) DIR=$(cd "$(dirname "$0")"; pwd) MONO_FRAMEWORK_PATH=/Library/Frameworks/Mono.framework/Versions/Current export DYLD_FALLBACK_LIBRARY_PATH="$DIR:$MONO_FRAMEWORK_PATH/lib:/lib:/usr/lib" export PATH="$MONO_FRAMEWORK_PATH/bin:$PATH" exec mono "$DIR/`basename $0`.exe"
#!/bin/sh # auto build Mono GTK# App on Mac by ying # v0.1 (2022.04.04) app_build_name=`basename $0` part_list=(${app_build_name//_/ }) app_name=${part_list[0]} echo $app_name macpack -m:cocoa -o:./App -n $app_name -a:$app_name.exe
Target framework | version | C# version default |
.NET | 6.x | C# 10 |
.NET | 5.x | C# 9.0 |
.NET Core | 3.x | C# 8.0 |
.NET Core | 2.x | C# 7.3 |
.NET Standard | 2.1 | C# 8.0 |
.NET Standard | 2.0 | C# 7.3 |
.NET Standard | 1.x | C# 7.3 |
.NET Framework | all | C# 7.3 |
Problem and Solution:
<PropertyGroup> <LangVersion>latest</LangVersion> </PropertyGroup>
Check dotnet version installed
dotnet --list-sdks
Web: > Blazor Desktop: > Cross-Platform: -- MAUI > Non Cross-Platform: --WinUI3 -- WPF
using System; //using System.Collections.Generic; //using System.Linq; //using System.Text; //using System.Threading.Tasks; namespace TestRun { class MainApp { static void Main(string[] args) { Console.WriteLine("Hellow World."); string reply = Console.ReadLine(); if (reply != ""){ Console.WriteLine("Got it:" + reply); } else{ Console.WriteLine("nothing"); } int num1 = int.Parse(Console.ReadLine()); int num2 = int.Parse(Console.ReadLine()); Console.WriteLine(num1+num2); Console.WriteLine(mult(num1,num2)); reply = Console.ReadLine(); } public static float mult(float n1, float n2) { float result = n1 * n2; return result; } } }
using System; using System.Collections.Generic; using System.Linq; using System.Text; /* ListSelection: (By Shining Ying) * v0.1: (2022.05.01) list selected item in top most explorer use with python: import subprocess app = r"D:\Projects\Dev\ListSelection\ListSelection\bin\Release\ListSelection.exe" info=subprocess.Popen( '{0}'.format(app),stdout=subprocess.PIPE, stdin=subprocess.PIPE, stderr=subprocess.PIPE ) out, err = info.communicate() result_list = [x.strip() for x in out.split('\n') if x.strip()!='' and not x.strip().startswith('#') ] */ namespace ListSelection { class Program { // need user32 to use get foreground window [System.Runtime.InteropServices.DllImport("user32.dll")] private static extern IntPtr GetForegroundWindow(); [System.Runtime.InteropServices.DllImport("user32.dll")] private static extern IntPtr GetTopWindow(IntPtr hWnd); [System.Runtime.InteropServices.DllImport("user32.dll")] private static extern bool IsWindowVisible(IntPtr hWnd); [System.Runtime.InteropServices.DllImport("user32.dll")] static extern IntPtr GetWindow(IntPtr hWnd, uint uCmd); enum GetWindow_Cmd : uint { GW_HWNDFIRST = 0, GW_HWNDLAST = 1, GW_HWNDNEXT = 2, GW_HWNDPREV = 3, GW_OWNER = 4, GW_CHILD = 5, GW_ENABLEDPOPUP = 6 } // stathread needed to fix unable to cast com object error, as it needs sta thread to use shell object // https://stackoverflow.com/questions/31403956/exception-when-using-shell32-to-get-file-extended-properties [STAThread] static void Main(string[] args) { List<IntPtr> order_list = new List<IntPtr>(); /*IntPtr fg_handle = GetForegroundWindow();*/ IntPtr top_handle = GetTopWindow((IntPtr)null); if (top_handle != IntPtr.Zero) { //Console.WriteLine((int)top_handle); if (IsWindowVisible(top_handle)) { order_list.Add(top_handle); } } IntPtr top_next = GetWindow(top_handle, 2); while (top_next != IntPtr.Zero) { //Console.WriteLine((int)top_next); if (IsWindowVisible(top_next)) { order_list.Add(top_next); } top_next = GetWindow(top_next, 2); } /* Console.WriteLine("==========================="); Console.WriteLine("Order:"); for (int i = 0; i < order_list.Count; i++) { Console.WriteLine((int)order_list[i]); } */ Shell32.Shell shell = new Shell32.Shell(); // fix reference: right click project, Add > Reference; in COM, check on Microsoft Shell Controls and Automation List<int> win_list = new List<int>(); foreach (SHDocVw.InternetExplorer window in shell.Windows()) { win_list.Add(window.HWND); } /* Console.WriteLine("==========================="); Console.WriteLine("win:"); for (int i = 0; i < win_list.Count; i++) { Console.WriteLine(win_list[i]); } */ // top most explorer int top_explorer = 0; for (int i = 0; i < order_list.Count; i++) { if (win_list.Contains((int)order_list[i])) { top_explorer = (int)order_list[i]; break; } } List<string> selected = new List<string>(); foreach (SHDocVw.InternetExplorer window in shell.Windows()) { // fix SHDocVw: right click project, Add > Reference; in COM, check on Microsoft Internet Controls if (window.HWND == top_explorer) { Shell32.FolderItems items = ((Shell32.IShellFolderViewDual2)window.Document).SelectedItems(); foreach (Shell32.FolderItem item in items) { selected.Add(item.Path); Console.WriteLine(item.Path); } } } Console.WriteLine("# By Shining Ying. - 2022/05/01"); //return (string.Join(", ", selected.ToArray())); } } }