.net相關知識(一)
阿新 • • 發佈:2019-01-10
- 公共語言基礎結構(CLI)
- 如果某個程式僅訪問分配的記憶體,則該程式就是記憶體安全的
- 未託管的資源是指不由 .NET 執行時自動維護的資源。 例如,檔案控制代碼就是未託管的資源。 FileStream 物件是一個託管物件,但它引用未託管的檔案控制代碼。
- 在檔案I/O中,要從一個檔案讀取資料,應用程式首先要呼叫作業系統函式並傳送檔名,並選一個到該檔案的路徑來開啟檔案。該函式取回一個順序號,即檔案控制代碼(file handle),該檔案控制代碼對於開啟的檔案是唯一的識別依據。
- .net執行時(.NET Framework 公共語言執行時 (CLR)其中一種);
- .NET Standard 將取代可移植類庫 (PCL)。
- AOT預編譯器,IL中間語言,JIT實時編譯器
- 託管程式碼(簡而言之,託管程式碼就是執行過程交由執行時管理的程式碼。 )
- 為非託管資源釋放記憶體(實現IDispose介面包括檔案控制代碼、視窗控制代碼或網路連線)
- Convert轉換相關
int j = checked(3);
int k = Convert.ToInt32(false);
int codePoint = 1067;
IConvertible iConv = codePoint;
char ch = iConv.ToChar(null);
//使用 ChangeType 方法的自定義轉換,Convert.ChangeType(Object, Type, IFormatProvider) 方法執行的
- 時間相關
//string customFormat = "MMMM dd,yyyy (dddd)";
//DateTime data1 = new DateTime(2019, 1, 7);
//print(data1.ToString(customFormat));
//int value = 123;
//print(value.ToString("D"));
//foreach(var customString in DateTimeFormatInfo.CurrentInfo.GetAllDateTimePatterns('d'))
//{
// print(customString);
//}
TimeSpan duration = new TimeSpan(1, 12, 23, 62);
TimeSpan interval;
string value = "1.03:14:56.1667";
try
{
interval = TimeSpan.ParseExact(value, "c", null);
}
catch (FormatException)
{
}
catch (OverflowException)
{
}
TimeSpan interval2 = TimeSpan.FromTicks(22233);方法執行的
- 字串相關
string dateInput = "Jan 1, 2009";
DateTime parsedDate = DateTime.Parse(dateInput);
string MyString3 = "Thursday";
DayOfWeek MyDays = (DayOfWeek)Enum.Parse(typeof(DayOfWeek), MyString3);
- 編碼相關
Encoding asciiEncoding = Encoding.ASCII;
//asciiEncoding.GetByteCount();
//asciiEncoding.GetString();
//asciiEncoding.GetCharCount();
- 異常相關
try
{
StreamReader sr = File.OpenText("data.txt");
Console.WriteLine("The first line of this file is {0}", sr.ReadLine());
sr.Close();
}
catch (Exception e)
{
print(e.Message);
// throw new Exception();
}
//finally
//{
//}
- 垃圾回收(待補充)
- 正則表示式(待補充)
- 泛型相關
public int IComparer<T>() { return 0; }
public delegate bool Predicate<T>(T item);
struct Sk
{
int ww;
}
public struct Nullable<T> where T:struct
{
}
class Test<T,U> where U:struct where T : new()
{
}
public class SampleClass<T,U,V>where T : V
{
}
class BaseNode { }
class BaseNodeGeneric<T> { }
// concrete type
class NodeConcrete<T> : BaseNode { }
//closed constructed type
class NodeClosed<T> : BaseNodeGeneric<int> { }
//open constructed type
class NodeOpen<T> : BaseNodeGeneric<T> { }
public delegate void Del<T>(T item);
public static void Notify(int i) { }
Del<int> m1 = new Del<int>(Notify);
class Stack<T>
{
T[] items;
int index;
public delegate void StackDelegate(T[] items);
}
void Start()
{
Nullable<Sk> NI = new Nullable<Sk>();
int wo = IComparer<string>();
Predicate<int> bill = new Predicate<int>(wwwl);
print(NI);
print(wo);
SampleClass<int, string, int> gg;
//約束相關 struct class unmanaged new() <基類名> <介面名> U
//某些約束是互斥的。 所有值型別必須具有可訪問的無引數建構函式。 struct 約束包含 new() 約束,且 new() 約束不能與 struct 約束結合使用。 unmanaged 約束包含 struct 約束。 unmanaged 約束不能與 struct 或 new() 約束結合使用。
}
- 委託相關
public class Point
{
public Point(int x, int y)
{
X = x;
Y = y;
}
public int X;
public int Y;
}
private void Start()
{
Point[] points = { new Point(100, 200),
new Point(150, 250), new Point(250, 375),
new Point(275, 395), new Point(500, 650) };
Predicate<Point> predicate = FindPoints;
Point[] first = Array.FindAll(points, predicate);
foreach (var item in first)
{
print(string.Format("found: x={0},y={1}", item.X, item.Y));
}
}
private bool FindPoints(Point obj)
{
return obj.X * obj.Y > 100000;
}
- linq(待補充)
- 並行處理、併發和非同步程式設計(待補充)