精华内容
下载资源
问答
  • C#中成员变量和局部变量
    千次阅读 热门讨论
    2021-01-26 16:05:31

    一.成员变量

    1.定义:在类中定义的变量是成员变量;

    2.作用范围:在整个类中都有效;

    3.分类:成员变量又分为实例变量和静态变量

    4.默认值:(成员变量不赋初始值的情况下,会自动匹配默认值)

    创建类的一个实例时,在执行构造函数之前,如果你没有给成员变量赋初始值,C#编译器缺省将每一个成员变量初始化为他的默认值。

    对于其他情况,编译器会在创建变量时,把变量初始化为默认值。
    1、对于整型、浮点型、枚举类型(数值型),默认值为0。
    2、字符类型的默认值为\x0000。
    3、布尔类型的默认值为false。
    4、引用类型的默认值为null。

    class A
    {
        string a;
    
    public void ss()
    {
        string b;
    }
    }
    
    以上例子中,a为全局变量,b为局部变量

    二.局部变量

    1.定义:在方法中定义的变量称为局部变量

    2.作用范围:在当前定义的方法中有效,方法调用被销毁,不能在其他类中调用

    3.默认值:如果是局部变量,在使用该变量之前,代码必须给他设定一个初始值,否则会发生“使用了未赋值的局部变量”错误。

    三.局部变量和字段的区别

    局部变量,在程序每运行一次后,就会被销毁,下次再运行就会被重新初始化

    字段只要是一个对象,只要对象不被销毁,就会一直保持对象的字段值;

    四.字段和局部变量的作用域冲突

     class Program
         {
              static int j = 20;
            static void Main(string[] args)
             {
                 int j = 30;
                 Console.WriteLine(j);
                 Console.WriteLine(Program.j);
                 Console.ReadLine();
                 return;                     
             }
         }

    例子中定义了两个变量j;在Main()方法的作用域中也定义了变量j,代码也会编译在类级上定义的j和Main()方法中定义的j;类级的变量j会被看成字段,此时Main()方法中的新变量j隐藏了同名的类级变量,所以运行代码时会显示数字30;如果要引用类级变量j时,只能使用类本身的名称。

    更多相关内容
  • c#局部变量和全局变量

    千次阅读 2020-07-29 20:02:49
    局部变量:声明在函数体内的变量,称之为局部变量。 using System; namespace MSN { class MainClass { int Add(int num1, int num2) { int sum;//局部变量 sum = num1 + num2; return sum; } public...

    局部变量:声明在函数体内的变量,称之为局部变量。

    using System;
    
    namespace MSN
    {
        class MainClass
        {
            int Add(int num1, int num2)
            {
    
                int sum;//局部变量
                sum = num1 + num2;
    
                return sum;
            }
    
            public static void Main(string[] args)
            {
                
                Console.WriteLine("Hello World!");
            }
        }
    }
    

    局部变量的声明范围容易产生歧义

    情况一:变量包含产生歧义

    根据变量的作用域遵循的原则(局部变量存在于声明该变量的块语句或方法结束的右花括号({})之前的作用域内),第一个变量j是在for循环开始前定义的,它的作用域是Main()方法;第二个变量的作用域是在for循环;第一个变量j的作用域包含了第二个j的作用域。对编译器来说会存在歧义,因为编译器无法区分这两个变量,所以不允许声明第2个 变量。

    public static void Main(string[] args)
    {
        int j = 20;//在Main中定义j为全局变量
        for(int i=0; i<10; i++)
        {
            int j = 30;//在for循环中定义j为局部变量,但两者同为Main中,产生了包含与被包含的关系,顾报错。
            Console.WriteLine(j);
        }
    }

    情况二: 变量升级为“类级变量”

    C#在变量之间有一个基本的区分,类级别声明的变量看作字段(成员变量),而方法中声明的变量看作局部变量。

    eg:

    class Program
    {
        //类的成员字段
        public int j = 20;//在Main外声明了一个类级变量
        //类的成员方法
        static void Main(string[] args)
        {
            int j = 30;//在Main函数中定义了一个Main中的变量
            Console.WriteLine(j);//执行主函数Main,打印Main中的j
            return;
        }
    }

    情况三 :主函数中引用类级变量

    对于情况二,第一个j通过public定义到Main函数之前,“升级”为类级变量(此时属于局部变量),通过下面的这种方法可以实现对类级变量的应用。

    eg:

    class Program
    {
        public int j = 20;
        static void Main(string[] args)
        {
            int j = 30;
            Console.WriteLine(j);
            Program obj = new Program();//new创建对象
            Console.WriteLine("类级变量是:" + obj.j);//调用方法,引用类级变量j
            return;
        }
    }

    情况四 :static声明引入类级变量

    如果选择将字段声明为 static,这时调用时可以直接引入类级变量。

    eg:

    class Program
    {
        static int j = 20;//static声明
        static void Main(string[] args)
        {
            int j = 30;
            Console.WriteLine(j);
            //Program obj = new Program();
            Console.WriteLine("类级变量是:" + Program.j);//可直接调用
            return;
        }
    }
    

     

    全局变量

    很遗憾! C#中不存在全局方法和变量,所有的变量和方法都包含在类的定义之中!

    展开全文
  • 方法中需要使用局部变量的值怎么办? 在写程序的过程中,需要使用变量data的值却发现当前上下文中不存在名称data 例子如下: private void btnRead_Click(object sender, EventArgs e) { string data = Convert....

    方法中需要使用局部变量的值怎么办?

    在写程序的过程中,需要使用变量data的值却发现当前上下文中不存在名称data
    例子如下:

     private void btnRead_Click(object sender, EventArgs e)
            {
                string data = Convert.ToString(serialPort1.ReadLine());
            }
            private void btn_Save_Click(object sender, EventArgs e)
            {
                textBox2.Text = data;
            }
    

    在上述程序中,是想将读取到的值放到文本框中显示出来,但却报错:
    在这里插入图片描述
    解决办法有两个:
    一种是将这两个方法合起来写,也就是去掉一个按钮:

    private void btnRead_Click(object sender, EventArgs e)
            {
                string data = Convert.ToString(serialPort1.ReadLine());
                textBox2.Text = data;
            }
    

    写成这样,但是既然要分开写,也有分开写的方法:
    即将局部变量改成全局变量:

     string data;
            private void btnRead_Click(object sender, EventArgs e)
            {
    
                data = Convert.ToString(serialPort1.ReadLine());
            }
            private void btn_Save_Click(object sender, EventArgs e)
            {
                textBox2.Text = data;
            }
    

    如上所示:将data改为全局变量,就不会报错了。

    展开全文
  • 变量赋值不起作用解决思路

    千次阅读 2021-05-20 04:54:01
    C/C++ code//你排个版,别人看上去舒服点///这么看看不出来,自己单步调下,在if中输出minx看下,不行再改个变量赋值给minx看看能不能改变#include "GetCoordinates.h"#include "kuangkaung.h"#include extern far LOG...

    C/C++ code//给你排个版,别人看上去舒服点/

    //这么看看不出来,自己单步调下,在if中输出minx看下,不行再改个变量赋值给minx看看能不能改变

    #include "GetCoordinates.h"

    #include "kuangkaung.h"

    #include

    extern far LOG_Obj trace;

    #define HEIGHT 576

    #define WIDTH 720

    extern int nObject;

    extern int nTarget[255];

    extern unsigned short pRegionGrow[HEIGHT*WIDTH];

    extern unsigned char m_SubStract[WIDTH*HEIGHT];

    //int minx, miny, maxx, maxy;

    void GetCoordinates()

    {

    int minx, miny, maxx, maxy;

    int i,j,k;

    int numMark;

    for(k = 1; k < nObject; k++)

    {

    minx = 719;

    maxx = 0;

    miny = 575;

    maxy = 0;

    numMark = 0;

    for(i = 0; i < HEIGHT; i++)

    {

    for(j = 0; j < WIDTH; j++)

    {

    int position = i*WIDTH +j;

    //m_SubStract[position] = 0;

    numMark = pRegionGrow[position];

    if(numMark == nTarget[k])

    {

    //m_SubStract[position] = 155;

    if(minx>j)

    {

    minx = j;

    }

    if(maxx < j)

    {

    maxx = j;

    }

    if(miny > i)

    {

    miny = i;

    }

    if(maxy < i)

    {

    maxy = i;

    }

    }

    }

    }

    LOG_printf(&trace, "i = %d.\n", i);

    LOG_printf(&trace, "j = %d.\n", j);

    LOG_printf(&trace, "minx = %d.\n", minx);

    LOG_printf(&trace, "maxx = %d.\n", maxx);

    LOG_printf(&trace, "miny = %d.\n", miny);

    LOG_printf(&trace, "maxy = %d.\n", maxy);

    kuangkuang( minx, maxx, miny, maxy);

    }

    }

    展开全文
  • public class LambdaTest { ... public static void main(String ... args){ int portNumber = 1337; Runnable r = ()-> { portNumber = 1338; System.out.println(portNumber); }; r.run(); } } ...
  • c# ref局部变量

    2020-03-03 00:34:15
    using System; class Simple { private int score = 5; //声明赋值 public ref int RefToVal() //建立方法 ... //返回局部变量 } public void Display() //建立方法 { Console.WriteLine($"Value inside clas...
  • 1.局部变量 2.值类型与引用类型
  • 如何在lambda表达式域中使用局部变量? Lambda 表达式是 JDK8 的一个新特性,可以取代大部分的匿名内部类,写出更优雅的 Java 代码,尤其在集合的遍历和其他集合操作中,可以极大地优化代码结构。 JDK 也提供了...
  • 变量的使用是编写程序中的一个重要环节,首先要做到第一步就是定义变量的类型,因为你需要让编译器知道变量类型后,才能按照类型对该变量进行空间的配置。变量的定义是:在程序运行过程中,空间内的值是变化的,这个...
  • C#中的static静态变量的用法

    千次阅读 2018-03-04 15:03:15
    静态全局变量定义:在全局...静态局部变量定义:在局部变量前加上static关键字时,就定义了静态局部变量。特点:  A、该变量在全局数据区分配内存。  B、初始化:如果不显式初始化,那么将被隐式初始化为0。  C、
  • 如果在Test2中这样写,就会报错(使用了为赋值局部变量“ts1”) 图片说明](https://img-ask.csdn.net/upload/201705/31/1496207496_321992.jpg) ``` public class Test2 { public void Say() { ...
  • c#入门-引用变量

    2022-01-25 11:53:26
    成员方法不同于本地方法,本地方法只你用,所以有更高的要求。 而成员方法因为参数也是方法的一部分,只要参数不同也能重名。但仍不能和字段重名。 参数信息包括参数类型,参数数量,参数顺序。不包括参数名字。...
  • // 语法正确,但本质是将a[2]的值赋值给n1引用所指,n1仍指向number,如果需要指向别的变量 需要在赋值号(=)之后加上ref n1 = a [ 2 ] ; Console . WriteLine ( $ "n1:{n1}, number:{number}, a[2]:{a[2]}" ) ;...
  • 例子一、将字符串转为变量名 string str = "spp"; public string spp = "very good"; private void button1_Click(object sender, EventArgs e) { MessageBox.Sho...
  • (一)★★★★★★★★★★在一个类中分析 全局变量、局部变量的区别★★★★★★★★★★★★★★★★★★★★★ 一、先看全局变量 1、静态方法,只能在使用本方法之外的静态变量 2、 静态static的变量,...
  • 在 dotnet 运行时中,引用对象进行赋值替换的时候,是线程安全的。结构体对象赋值,如果此结构体是某个类的成员字段,那么此赋值不一定是线程安全的。是否线程安全,取决于结构体的大小,取决于此结构体能否在一...
  • C#全局变量的定义和使用

    千次阅读 2022-02-23 19:22:42
    C#程序中,为了在不同的作用域(cs文件或Form界面)之间传递数据,可以使用public static对象来定义全局变量: GlobalVarAndFunc.cs public static class GlobalVarAndFunc { public static string testString = ...
  • 一、在C#7.0以上版本中,方法的返回值可以通过关键字ref指定为返回变量的引用(而不是值)调用方,这称为引用返回值(Reference Return Value,或ref returns); 1.与引用参数一样,使用关键字ref声明引用返回值...
  • 匿名方法捕获变量(闭包)要注意的:如果在匿名函数内部捕获到外部的变量,被捕获到的是变量,而不是创建委托实例时该变量的值。在匿名方法外对变量的更改在匿名方法内部是可见的,反之亦然。如果只是创建一个委托...
  • C# 变量与常量

    2021-06-07 17:17:20
    C# 变量 文章目录C# 变量1.什么是变量变量的定义)2.变量的类型和初始化3.变量的特点4.变量名(做好程序员的基本要求)5.变量的分类 1.什么是变量变量的定义) 变量是:内存中的一块区域,这个区域名 = 变量名。...
  • 1、var 仅能声明方法内的局部变量 2、var 声明的变量在被赋值后类型即确定下了,后续程序中不能在赋其他类型的值 3、var x = new object() 没有意义,不要写这样的代码...............  现在有匿名对象和...
  • void 计算() { Calc clac;//声明一个类 switch (cbChar.SelectedItem.ToString()) { case "+": clac = new CalcAddWay();...
  • C语言中,变量的生命周期与作用域,全局变量与局部变量的定义与详细说明。
  • 这篇文章主要大家介绍了关于C语言未初始化的局部变量是多少,文中通过示例代码以及图文介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起学习吧。 在演示一个实际代码...
  • 目录 1.值类型和引用类型对比 ...对象在C#中默认是通过引用传递的" 5.装箱和拆箱:值类型和object的转换 1.值类型和引用类型对比 类型分类 类型基类 特点 C#中的类型代表 unity...
  • C# 中的类型和变量

    2021-02-17 20:06:06
    一、C# 程序是一组类型声明 如果泛泛地描述 C 和 C++ 程序源代码的特征,可以说 C 程序是组函数和数据类型,C++ 程序是组函数和类,而 C# 程序是组类型声明。 C# 程序或 DLL 的源代码是一组类型声明。 对于可执行...
  • 问题如何在多个位置的整个类中直接设置私有成员变量的值来协调该语句?是否重要,因为该值不存在外部依赖性?是否重复直接更改除访问者之外的其他地方具有公共访问者的私有成员变量?例请考虑以下代码:public class...
  • C# static静态变量用法

    千次阅读 2017-04-25 15:05:41
    静态函数的实现里不能使用非静态成员,如非静态变量、非静态函数等。 静态全局变量 定义:在全局变量前,加上...定义:在局部变量前加上static关键字时,就定义了静态局部变量。 特点:  A、该变量在全局数
  • C#中,使用“数据类型 变量名称”的方式声明一个变量,在声明变量的同时还可以对变量进行初始化。 ​ 在使用变量时,编译器会检查程序是否使用了还未初始化的变量,如果程序使用了还未初始化的变量,会导致一个...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 15,681
精华内容 6,272
关键字:

c# void 无法给局部变量赋值

c# 订阅