-1
A
回答
1
這是一個不安全的指針。 Unsafe Code Tutorial
下面是使用它的一個例子:How to pull out alpha and count digits using regex?
private static unsafe List<long> ParseNumbers(char[] input)
{
var r = new List<long>();
fixed (char* begin = input)
{
char* it = begin, end = begin + input.Length;
while (true)
{
while (it != end && (*it < '0' || *it > '9'))
++it;
if (it == end) break;
long accum = 0;
while (it != end && *it >= '0' && *it <= '9')
accum = accum * 10 + (*(it++) - '0');
r.Add(accum);
}
}
return r;
}
0
那些是Pointer types。
在不安全的上下文中,類型可能是指針類型以及值類型或引用類型。指針類型聲明採用以下形式之一:
type* identifier;
void* identifier; //allowed but not recommended
1
看一看Pointer types (C# Programming Guide)
在不安全上下文中,一個類型可以是指針類型,值類型,或 參考類型。指針類型聲明採用以下格式之一:
type * identifier;
void * identifier; //允許但不建議
0
它們被稱爲Pointer types
在不安全上下文中,一個類型可以是指針型以及一個 值類型或引用類型。但是,指針類型也可能是 ,用於不安全上下文之外的typeof表達式中,因爲此類用法並非不安全。
指針型被寫入作爲非託管型或關鍵字void, 後跟一個*標記:
在指針類型的*之前指定的類型被稱爲指針的 所指類型類型。它表示指針類型的值所指向的 變量的類型。
與引用(引用類型的值)不同,指針不是由垃圾收集器跟蹤的 - 垃圾收集器沒有指針和指向的數據的 知識。對於這個 原因,指針不允許指向包含引用的引用或 結構,並且指針 的引用類型必須是非託管類型。
0
這是指針在C#
請花時間閱讀本Unsafe Code Tutorial
using System;
class Test
{
// The unsafe keyword allows pointers to be used within
// the following method:
static unsafe void Copy(byte[] src, int srcIndex,
byte[] dst, int dstIndex, int count)
{
if (src == null || srcIndex < 0 ||
dst == null || dstIndex < 0 || count < 0)
{
throw new ArgumentException();
}
int srcLen = src.Length;
int dstLen = dst.Length;
if (srcLen - srcIndex < count ||
dstLen - dstIndex < count)
{
throw new ArgumentException();
}
// The following fixed statement pins the location of
// the src and dst objects in memory so that they will
// not be moved by garbage collection.
fixed (byte* pSrc = src, pDst = dst)
{
byte* ps = pSrc;
byte* pd = pDst;
// Loop over the count in blocks of 4 bytes, copying an
// integer (4 bytes) at a time:
for (int n =0 ; n < count/4 ; n++)
{
*((int*)pd) = *((int*)ps);
pd += 4;
ps += 4;
}
// Complete the copy by moving any bytes that weren't
// moved in blocks of 4:
for (int n =0; n < count%4; n++)
{
*pd = *ps;
pd++;
ps++;
}
}
}
static void Main(string[] args)
{
byte[] a = new byte[100];
byte[] b = new byte[100];
for(int i=0; i<100; ++i)
a[i] = (byte)i;
Copy(a, 0, b, 0, 100);
Console.WriteLine("The first 10 elements are:");
for(int i=0; i<10; ++i)
Console.Write(b[i] + " ");
Console.WriteLine("\n");
}
}
和輸出
The first 10 elements are:
0 1 2 3 4 5 6 7 8 9
我的牙齒這會給你一個想法,以低調的指針在C#以及如何使用它
好運
相關問題
- 1. C中的數據類型
- 2. 在C#中的列表中保存不同類型的數據#
- 3. 類型的數據類型來表示一個數
- 4. Haskell的圖形數據類型表示
- 5. 數據類型在C#
- 6. C++中等效數據類型的C#
- 7. C++類中的任意數據類型
- 8. 數據表C#中的線性內插 - 確定數據類型
- 9. 如何在C#中表示具有可變數量列的通用數據類型的表格數據?
- 10. 數據類型模型C++
- 11. 在C中比較數據類型#
- 12. 數據類型混合在c中
- 13. 在C++中測試數據類型
- 14. 在C中存儲數據類型
- 15. 在C#中查找數據類型#
- 16. 數據類型在java中表示一個十進制數字
- 17. 在C#中的所有數據類型下拉列表
- 18. 理解在Matlab中表示數據類型的字符串
- 19. 類型的數據幀列表在R中顯示尾隨零
- 20. 在Excel中構建層級類型的數據表示
- 21. 數據類型的OBJ-C
- 22. C#不同數據類型列表
- 23. 將列表數據填充到數據模型類中C#
- 24. 數據辨識類型在C/C++
- 25. 對象在C#表示某些類型
- 26. C中的數據類型的問題
- 27. 由多種其他數據類型之一選擇表示的數據類型
- 28. 表變量中的表數據類型
- 29. 將數據表示數據反映到類對象中C#
- 30. 模糊c-表示分類數據
這是C/C++,不C#的。這是一個指針:http://www.cs.cf.ac.uk/Dave/C/node10.html – GrandMasterFlush
下面是在C#中的數據類型:http://msdn.microsoft.com/en-us/library/ms173104 (v = VS.80).ASPX – Max
@GrandMasterFlush眼罩離:) – sehe