这个问题出现在的评论中。无法拥有只读属性是使用字段而不是属性的一个潜在原因。
例如:
class Rectangle
{
private readonly int _width;
private readonly int _height;
public Rectangle(int width, int height)
{
_width = width;
_height = height;
}
public int Width { get { return _width; } }
public int Height { get
在C#规范的8.8.4中,它提供了以下示例:
表格的前瞻陈述
foreach (V v in x) embedded-statement
然后扩展为:
{
E e = ((C)(x)).GetEnumerator();
try {
V v;
while (e.MoveNext()) {
v = (V)(T)e.Current;
embedded-statement
}
}
finally {
… // Dispose e
}
}
下面是一个代码片段:
char * cptr3 = "Hello"; // Line 1
char c = *(cptr3+3); // Line 2
*(cptr3+3)= '7'; // Line 3 : will result in AV
如何发现cptr3位于只读数据段或代码(文本)段?我更喜欢VS2010,因为我使用windows,但我也对其他选择持开放态度。
假设你在一个类中有一个字段_items。您可以在声明时初始化它:
class C
{
IList<string> _items=new List<string>();
}
现在,我想将此字段转换为自动生成的属性,但初始化现在无效:
class C
{
public IList<string> Items=new List<string>(); {get; set;} // Invalid
}
所以,我必须这样做:
class C
{
public IList<string> Items {get; set;}
pub
最近,我收到了一些遗留代码,其中有一些问题。在一些代码中,我注意到很多状态报告都存储为3d char数组。关键是,这个空间中有很多实际上是未使用的。例如:
const char txt[<60>][6][150] =
{
{"This is a very very long string of text", "The others are empty", "", "", "", ""},
{"The text is different, but similarly
我读到了一些常见的C陷阱,并在上读到了这篇文章。(这是谷歌的第二个链接)。
页面上的最后一个例子是,
// Memory allocation on the stack
void b(char **p) {
char * str="print this string";
*p = str;
}
int main(void) {
char * s;
b(&s);
s[0]='j'; //crash, since the memory for str is allocated on the stack,