在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
}
}
(注意:这个示例代码需要C# 7.2或更高版本,以及包。)
假设我们有一个readonly struct,如下所示:
public readonly struct Test
{
public Test(int value)
{
Value = value;
}
public int Value { get; }
}
现在,让我们把它放到一个数组中:
var array = new Test[] { new Test(1) };
Console.WriteLine(array[0].Value); // Prints 1
到目前一切尚好。您不能
这些命令似乎显示只读变量在导出时不会保留:
Bash版本4或更高版本
f() {
# A local variable will be visible within the function in which it is declared
local a=1
# Declare acts as a synonym (?) to local here, as I do not specify -g (global)
declare b=2
# This is a regular global variable, it won't be in
我是C#世界的新手,我找不到在C#中声明只读变量的方法(类似于在c++中声明"const“变量)。有吗?
我给你举个例子:
...
int f() { return x; } // x is not const member
...
void g() {
int readOnlyVar = f(); // is there a method to declare readOnlyVar as read only or const
// Some code in which I want to restrict access to readOnlyVar to read
我正在使用C++制作一个复数类。我想让==操作符超负荷。但我发现了一个错误:
In file included from Complex.cpp:1:0,
from testComplex.cpp:2:
Complex.h: In function ‘bool operator==(const Complex&, const Complex&)’:
Complex.h:29:21: error: passing ‘const Complex’ as ‘this’ argument of ‘double Complex::real()’ discards
有谁能解释一下代码和数据存储器的区别吗?我知道代码存储在Flash中,数据存储在RAM中,但我很困惑。
#include <iostream>
using namespace std;
int main()
{
int a =10, b=20;
int c = a+b;
return 0;
}
在这里,a,b,c存储在数据存储器(RAM)中,但是在代码内存中存储了什么?这整个代码是否存储在代码内存中?如果是,那么这是否意味着我们将a,b,c存储在数据和代码内存中。
我对C# (C++程序员主要是以Java作为强第二语言,还有一些是我使用的较少)还是很陌生的;我使用的是带有统一的C#,但我有一个似乎与C#相关的问题,而不是团结。
我在某种程度上转向了函数式编程,即不是
// C++
int someFunction(int a) {
int someCalculatedValue = a * a;
someCalculatedValue /= 2;
return someCalculatedValue * 3;
}
我会做这样的事
// Again C++
int someFunction(int a) {
const in
因为C中没有保护全局变量赋值的语言特性,您会建议这样做吗?
举个例子:
我们有一个包含头文件module.h和实现文件module.c的模块。该模块包含一个名为global_variable的全局变量。global_variable将由实现中的其他函数更新,但我们不希望module的用户能够分配给它。
模组:
#ifndef MODULE_H_
#define MODULE_H_
extern int global_variable;
#define global_variable (int)global_variable
/* Because the macro expansion is
下面是VB.Net中的代码
If Not queryItems Is Nothing Then
For Each qItem As String In queryItems
qItem = qItem.ToLower()
Next
End If
它在c#中的“等效”代码(使用sharpdevelop/developerfusion/telerik的converter/VS2012“粘贴为c#”方法)
if (queryItems != null)
{
foreach (string
这个问题出现在的评论中。无法拥有只读属性是使用字段而不是属性的一个潜在原因。
例如:
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#中使用jabber.net,有一个怪癖让我很困惑,所以希望有人能解释一下它是如何做到的。我在C++背景下对C#仍然是个新手,所以这可能是一个误解
我正在创建一个只读的JID来存放我需要进入的房间:
private readonly JID messagingRoomJID;
public MyClass
{
// Reads from database but for purpose of this question
messagingRoomJID = new JID("user@myserver");
}
后来我想加入一个房间,在那里我得到了让我困惑的
在C# 3.0之前,我们是这样做的:
class SampleClass
{
private int field;
public int Property { get { return this.field } set { this.field = value } }
}
现在我们这样做:
class SampleClass
{
public int Property { get; set; }
}
(看,妈妈!没有字段!)现在,如果我想自定义Getter或Setter,该字段必须像在C#2.0中一样显式。
C# 7.2为方法引入了in参数。我理解它们的工作原理:
int MyMethod(in int i) {
i += 1; // illegal, i is read-only
return i + 1;
}
我发现这些参数是通过引用传递的(比如ref和out)。
我不明白的是目的的in参数。我用它们能得到什么呢?
我理解out和ref参数的用途,能够在调用范围内为变量赋值是非常有用的,但是该函数与in参数不存在。