c# - 限制 .NET 类型是否只能通过 ByVal 或 ByRef

标签 c# attributes

如果您在 .NET 中创建一个类,是否有任何方法对其进行限制,以便如果它被传递到某个方法(作为输入参数),则它只能通过引用传递或只能通过值传递?
我在想也许可以通过类的一个属性?

最佳答案

我认为答案是否定的,因为 ByVal 和 ByRef 是由方法做出的选择,而不是调用者或类型设计者。

但是,听起来您想要的是创建一个您知道不可变的类型?也许您想确定它永远不会被更改?那么你可以做的是以下之一(不是完整列表):

创建对象,以便您可以通过使用私有(private)、公共(public)、内部关键字等访问可设置的属性。

创建对象,以便您可以通过构造函数获得其内部状态的唯一方法。

实现一个接口(interface)并传递该接口(interface)而不是实现它的对象。该接口(interface)将设计为仅读取对象的内部状态。

防止任何人使用 sealed (C#) 或 NotInheritable (VB) 关键字派生对象。

关于c# - 限制 .NET 类型是否只能通过 ByVal 或 ByRef,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3362964/

相关文章:

c# - InvalidOperationException : Key type not specified. Microsoft.AspNetCore.ApiAuthorization.IdentityServer.ConfigureSigningCredentials.LoadKey()

c# - Docker中如何区分挂载卷和镜像 native 目录

c# - 使用泛型检索属性

MySQL Item 属性取决于类别

c# - 为什么我的字段没有在带有 EditorFor 的 Mvc 中更新?

c# - 防止用户浏览 OpenFileDialog 中的其他地方

c# - "CSharpCodeProvider.Parse"的替代品

python - 当类的任何属性被修改时,类如何运行某些功能?

encoding - 带问号的钻石

.net - 在 PropertyGrid 中设置只读属性将所有属性设置为只读