我在C#中声明了public partial class Form1 : Form内的几个int个变量.然而,如果不是在函数中完成的,我就无法使用或更改它们(例如.G. private void button1_click内部),就好像变量从来不存在一样.当try 更改值r时,它会出现"IDE int7:名称‘r’在当前上下文中不存在"错误.也就是说,我无法使用Pen dot = new Pen(Color.FromArgb(r, g, b));创建笔,try 这样做会出现另一个错误,"CS 0236:字段初始化器无法引用"Form1.r"中的非静态字段、方法或属性"(我正在try 创建一种MS Paint克隆).

这是我代码的一个片段:

int r = 0;
int g = 0;
int b = 0;
int size = 2;

Pen dot = new Pen(Color.FromArgb(r, g, b));
Pen rect = new Pen(Color.FromArgb(r, g, b));
Pen pencil = new Pen(Color.FromArgb(r, g, b));
string curpen = "";

以下是一些包含错误的屏幕截图:

名称"r"在当前上下文中不存在:

name 'r' doesn't exist in current context

字段初始化项无法引用..& gt;

字段初始化项无法引用..& gt;

try 更新VS.没有帮助.有什么 idea 吗?

推荐答案

在C#中,您不能使用方法外部的另一个成员变量初始化成员变量.

要解决您的问题,您可以使int r、g、b全部为静态(您可能不希望这样.),或者您可以使用构造函数来初始化您的笔. 类似于这样的:

public class Form1 : Form {
    int r, g, b = 0;
    Pen dot = null;

    public Form1() {
        InitializeComponent();
        dot = new Pen(Color.FromArgb(r, g, b));
    }
} 

创建表单后,就会执行构造函数.它是放置初始化逻辑的地方.

Csharp相关问答推荐

在包含空项的列表上使用具有断言T的摘要表

Microsoft. SQLServer. Types(106.1000.6)在try 从用户定义的类型检索值时引发异常

在. NET Core 8 Web API中,当为服务总线使用通用消费者时,如何防止IServiceProvider被释放或空?"

为什么这个Reflection. Emit代码会导致一个DDL ViolationException?

将列表字符串映射为逗号分隔字符串<>

在发布表单时绑定包含附加(嵌套)列表的对象列表的正确语法是什么

try 在Blazor项目中生成html

更新产品但丢失产品ASP.NET Core的形象

实体框架核心中的ComplexType和OwnsOne有什么不同?

在路由中使用枚举

使用泛型可空类实现接口

如果设置了另一个属性,则Newtonsoft JSON忽略属性

N层解决方案上的依赖注入-删除样板

TagHelpers在新区域不起作用

带有列表参数的表达式树

如何在mediatr命令中访问HttpContext而不安装弃用的nuget包

VS代码扩展无法在新版本扩展C#中运行从v2.10.28开始

流畅的验证--如何为属性重用规则?

ASP.NET Core 8 Web API:如何添加版本控制?

实体框架允许您具有筛选的属性吗?