public class ExampleClass: MonoBehaviour
{
int exampleVariable = 0;
int exampleVariableForAwake;
void Awake()
{
exampleVariableForAwake = 0;
}
}
initializing a variable at declaration和initilize in Awake的区别是什么?
据我所知,用它来代替C#中的构造函数,如果我错了,欢迎指正。
哪一种用法被社会认为是适当的惯例,如果有的话?
同
我尝试使用纯init属性来强制客户端代码在创建类时初始化类,但没有构造函数。不像我计划的那样。
这是一堂课,为了说明这一点,我们对其进行了简化。
public class Target
{
public int Id { get; init; }
public string Name { get; init; }
}
这个项目在.NET 6.0上,所以我使用C# 10.0。Nullable在项目上被设置为“已启用”,因此引用属性Name必须为非空。令我困惑的是,编译器抱怨在构造函数
我正在阅读一些c#源代码codes.And --有些东西混淆了me.In的以下代码,OptionSet是从类KeyedCollection继承的,当OptionSet像下面这样初始化时,它将首先调用OptionSet()来获得一个新的但空的OptionSet,然后调用Add()两次以插入{“h-?”、v- =>语法( } )和{ "analyzer=",v=>分析器=v}。
我想知道为什么它会像这样初始化,为什么使用Add()?
var p = new OptionSet()
{
{ "h|?|help", v => S
当省略默认构造函数时,类型的数据成员如何获得他们的默认值?如果给他们默认值,那么首先,默认构造函数的用途是什么?
class Program
{
static void Main(string[] args)
{
Person person = new Person("SomeName");
Console.WriteLine(person.Age);
Console.WriteLine(person.FamileName == null);
}
}
class Person
{
public s
最近,在经历了很长一段时间的C#之后,我意识到‘对象构造器’是一个很好的方法,可以让自己相信他们在处理一个功能对象。
考虑:
let x = new Something()
x.Key <- 1
x.Value <- 2
这感觉非常不干净,因为价值观发生了明显的变化。特别是如果我们只写一次对象,在C#中感觉非常没有必要,可以像这样初始化对象:
var x = new Something() { Key = 1, Value = 2 };
这看起来更好,实际上我感觉我用的是一张唱片(几乎),很明显它只是糖,但它的糖很好。
问:假设我们无法控制“某物”(假设它来自某个C#库),那么在F
我最近正在编写一些代码,它已经从使用十进制改为使用具有十进制数的复杂类型,以及表示分数的类型。我不得不更新一些测试,在输入时我忘记添加新关键字。代码已编译,但测试始终失败,引发了一个NullReferenceException。在那里,我意识到缺少的新的,并没有初始化的属性。有人知道为什么会发生这种事吗?我在C# lang规范中找不到任何可以解释这一点的东西。
下面是代码示例:
public class Fraction
{
public int Numerator { get; set; }
public int Denominator { get; set; }
}
p
问题:
大家好,
抱歉,这是一个低级的问题。我只是不知道如何表达这个过程,所以我不确定谷歌搜索什么。我将在下面放一些C#代码,它们应该可以解释我正在尝试做什么。我只是不知道用VB怎么做。另外,对于将来的ref,如果你能告诉我这个过程叫什么,知道这一点会很有帮助。提前感谢您的帮助。
// Here is a simple class
public class FullName
{
public string First { get; set; }
public char MiddleInintial { get; set; }
public string Last { g
为什么C#允许在非静态结构中初始化静态类变量?静态变量只能在静态构造函数上初始化。有什么想法吗?
public class customer
{
public string Name;
public customer()
{
Name = "C1";
Console.WriteLine("creating customer " + Name);
}
}
class Program
{
public static customer cust;
public Program()
在9预览版中,我在c#中遇到了“C# init”关键字。它意味着什么,它的应用是什么?
public class Person
{
private readonly string firstName;
private readonly string lastName;
public string FirstName
{
get => firstName;
init => firstName = (value ?? throw new ArgumentNullException(nameof(FirstName)
有人能建议我在编写C#构造函数时采取什么方法吗?
在其他语言(如C++ )中,一切都很好--通常不会使内部字段可见,并为它们提供getter/setter。
这意味着,您可以为类提供构造函数,这些构造函数初始化所有/部分本地成员并感到高兴。
然而,C#有properties,它允许我们编写如下内容:
Class x = new Class { Field1 = new Field1 ...., Field2 = new Field2 }
这允许对对象构造进行链接,并且,正如我假设的那样,可以删除许多构造函数,如果我们没有properties,这将是必需的。
结合我假设的属性的默认值,我们可以
考虑这个例子:
class C {};
class B {
public:
B(C& c) : c_(c) {};
private:
C& c_;
};
class A {
public:
A(C& c) : b(c) {};
private:
B& b;
};
A有一个B类的引用成员b。B有一个引用类C的构造函数。A的构造函数引用了类C,并尝试通过使用c调用后者的构造函数来初始化b。
但clang抱怨说,他的信息如下:
wtf.cpp:12:13: error: non-const lvalue reference to type '
给这堂课
public class B
{
public bool flag = false;
public B()
{
}
}
当我用行初始化它时
var jjj = new B(){flag = true};
如果我在构造函数B()中放置一个断点,则标志为false。我期望它是真的,因为我在初始化它时调用了“标志=真”。
我做错了什么?
当我第一次开始使用面向对象的编程语言时,我得到了以下规则:
在类中声明字段时,不要初始化它。在构造函数中这样做。
C#中的一个例子:
public class Test
{
private List<String> l;
public Test()
{
l = new List<String>();
}
}
但最近有人问我为什么要这么做,我想不出原因。我不太熟悉C# (或其他编程语言)的内部工作,因为我认为这可以在所有OO语言中实现。
那为什么要这么做?是保安吗?财产?
我正在创建一个类型为类的对象,并仅使用常量值实例化它,但它始终失败。我的类在另一个文件中,带有公共子类。我使用类名访问这些子类,然后使用类型,因为我对它的实例化没有子类。然后它告诉我,该行上有一个空引用错误。我最初使用的是动态值,但由于失败,我用常量替换了它们。
这是我的密码。
Requests.cs
public class Requests
{
// Start is called before the first frame update
public class PostData{
public Dictionary<string, Time&g
我需要计算JavaScript 方法在C#中。
为了简单起见,我在UTC中选择了一个固定的日期,并比较了C#:
C#
DateTime e = new DateTime(2011, 12, 31, 0, 0, 0, DateTimeKind.Utc);
DateTime s = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);
TimeSpan t = (e - s);
var x = t.TotalMilliseconds.ToString();
=> 1325289600000
JavaScript的结果是:
JavaScrip
字符串对象的数组可以创建为
//可接受的声明和初始化
line 1: String[]s = new String[2];
line 2: String[]s = new String[]{"a","b"};
//下面的init在我看来也不错,但是编译器出错了
line 3: String[] s = new String[2] { "a", "b" };
1)为什么我不能在第3行中指定数组的大小?
2)当我使用第3行创建数组时,字符串"a“和"b”是在堆上还是在字符串池中创建的?
我目前在JavaScript和用C#编程的服务器之间有一个WebSocket。在JavaScript中,我可以使用关联数组轻松地传递数据:
var data = {'test': 'val',
'test2': 'val2'};
为了在服务器端表示这个数据对象,我使用了一个Dictionary<string, string>,但这比在JavaScript中更“输入昂贵”:
Dictionary<string, string> data = new Dictionary<stri
PHP有一个语言结构list(),它在一个语句中提供多个变量赋值。
$a = 0;
$b = 0;
list($a, $b) = array(2, 3);
// Now $a is equal to 2 and $b is equal to 3.
在C#中也有类似的东西吗?
如果没有,有什么解决办法可以帮助避免像下面这样的代码,而不必处理反射
public class Vehicle
{
private string modelName;
private int maximumSpeed;
private int weight;
private bool isD
auto-properties在VS2005中工作吗?我似乎无法使用它们来编译我的C#类(与就地初始化一样)。我已经安装了Framework3 sp1。这些功能只在VS2008中可用,还是我做错了什么?
通过就地初始化,我指的是:
SomeClass c = new SomeClass()
{
Name = "",
Value = 12345
};
在这张图表中,关于罗斯林的下一个版本中的特性(特别是对于C#),主构造函数已经退出,但是自动属性初始化器在其中。
我所见过的自动属性初始化器的最佳用例是将它们与主构造函数结合使用,即:
public class Customer(string first, string last)
{
public string First { get; } = first;
public string Last { get; } = last;
}
但是,如果没有主构造函数,我看不出一个很好的用例来使用不能仅用普通支持字段执行的自动属性初始化,如下所示:
public class Custo
当在类作用域中使用C# lambda表达式时,为什么不能使用实例属性和字段?参见此示例:
public class Point:INotifyPropertyChanged
{
public float X {get; set;}
public float Y {get; set;}
PropertyChangedEventHandler onPointsPropertyChanged = (_, e) =>
{
X = 5;
我犹豫不决地问,但是没有任何文档可以让我找到用于VBA的。
相关的(但我不认为这是个骗局):
C++
C++
和最有可能相关的
我还看了一下。
我想我用的是“实例化”这个词,但如果我错了,请纠正我。实例化是当一个变量被创建并分配它所需要的资源时?因此,在VBA中,我看到了两种方法。
上面的一切!
Public Sub ToTheTop()
Dim var1 As Long
Dim var2 As Long
Dim var3 As Long
var1 = 10
var2 = 20
var3 = var1 + va
我是一名C#开发人员,我非常习惯在相同的声明语句中初始化变量
ClassA myClass = new ClassA();
在我看来,这种做法简明扼要,可读性更强,看起来也很整洁。
现在,我正在学习android的java。到目前为止,无论我面对的是什么java代码片段,我都能看到代码作者使用的代码是这样的:
ClassA myClass;
myClass = new ClassA();
现在,我明白,我的问题可能听起来很愚蠢,但我真的很想知道,这两种方法之间有什么影响/效果,还是有什么不同?我的意思是,如果我像这样用java编译一段代码:
ClassA myClass = new Class