gpt4 book ai didi

c# - 访问 `this` : invalid in C#, 的字段初始值设定项在 Java 中有效吗?

转载 作者:搜寻专家 更新时间:2023-10-30 21:04:48 25 4
gpt4 key购买 nike

<分区>

首先介绍一下:

这段代码:

class C
{
int i = 5;
byte[] s = new byte[i];
}

编译失败,出现以下错误:

A field initializer cannot reference the nonstatic field, method, or property `C.i'

Resharper 说了类似的话:无法在静态上下文中访问非静态字段 i

这与 C# spec says 内联-- 字段初始值设定项无法访问当前正在创建的实例 (this),或者通过扩展,访问任何实例字段:

A variable initializer for an instance field cannot reference the instance being created. Thus, it is a compile-time error to reference this in a variable initializer, as it is a compile-time error for a variable initializer to reference any instance member through a simple-name.

然而,这在 Java 中工作得很好:

class C {
int i = 5;
byte s[] = new byte[i]; //no errors here
}

还在我身边吗?好的,这是问题。错误,问题。

在一个假设的世界中,这在 C# 中是有效的,我想知道:它甚至可能吗?如果是这样,将添加到表格中的优点和缺点是什么?此外,由于 Java 确实支持它,同样的优点/缺点是否适用 对于 Java?还是两种语言的类型初始值设定项的工作方式存在根本差异

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com