C# 构造函数依赖注入 使用out向外传递参数

天真

using System;

namespace forCode20191 {
    class Program {
        static void Main(string[] args) {
            bool flag = false;
            Tmp tt = new Tmp(out flag);
            Console.WriteLine(flag); // 将输出 false
            tt.Doit();
            Console.WriteLine(flag); // 将输出 true
            Console.ReadKey();
        }
    }

    class Tmp {
        public bool Flag { get; private set; } // 将flag作为公共属性,只能通过类内部set

        public Tmp(out bool flag) {
            Flag = false; // 初始化成员变量
            flag = Flag; // 将成员变量的值赋给out参数
        }

        public void Doit() {
            Flag = true; // 修改成员变量的值
        }
    }
}

目前解决方法

C#中,out参数是在方法调用时才创建的,它的作用域仅限于方法调用的上下文。这意味着,一旦构造函数Tmp执行完毕,out参数flag就不再存在了。因此,您不能在Tmp类的其他方法中访问这个flag变量。

在构造函数中,您可以将flag设置为某个值,但是一旦构造函数执行完毕,您就无法再修改这个flag了。如果您希望在类的其他方法中修改这个标志,您需要将这个标志作为类的成员变量。

下面是修改后的代码,其中flagTmp类的成员变量,可以在类的任何方法中访问和修改:

using System;

namespace forCode20191 {
    class Program {
        static void Main(string[] args) {
            Tmp tt = new Tmp();
            Console.WriteLine(tt.Flag); // 输出 false,因为Flag在构造时被设置为false
            tt.Doit();
            Console.WriteLine(tt.Flag); // 输出 true,因为Doit方法将Flag设置为true
            Console.ReadKey();
        }
    }

    class Tmp {
        public bool Flag { get; private set; } // 将flag作为只读公共属性

        public Tmp() {
            Flag = false; // 初始化Flag为false
        }

        public void Doit() {
            Flag = true; // 在Doit方法中将Flag设置为true
        }
    }
}

相关推荐

  1. C# 构造函数依赖注入 使用out传递参数

    2024-07-10 13:48:06       12 阅读
  2. C# DI依赖注入

    2024-07-10 13:48:06       39 阅读
  3. C++ 构造函数中的参数顺序

    2024-07-10 13:48:06       19 阅读
  4. 解释C语言中的函数及其参数传递方式

    2024-07-10 13:48:06       28 阅读
  5. 漫谈:C语言 值传递 函数参数 指针

    2024-07-10 13:48:06       24 阅读
  6. 使用 kapt 注解生成依赖注入代码

    2024-07-10 13:48:06       3 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-10 13:48:06       4 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-10 13:48:06       5 阅读
  3. 在Django里面运行非项目文件

    2024-07-10 13:48:06       4 阅读
  4. Python语言-面向对象

    2024-07-10 13:48:06       5 阅读

热门阅读

  1. 信息时代,呼唤新的哲学

    2024-07-10 13:48:06       10 阅读
  2. 【数据基础】— B树

    2024-07-10 13:48:06       9 阅读
  3. Vue 路由传参 query方法 bug 记录

    2024-07-10 13:48:06       9 阅读
  4. 翻页 上一页/下一页

    2024-07-10 13:48:06       11 阅读
  5. 前端导出pdf

    2024-07-10 13:48:06       11 阅读
  6. Knife4j的原理及应用详解(五)

    2024-07-10 13:48:06       10 阅读
  7. Day2--每日一练

    2024-07-10 13:48:06       10 阅读
  8. 东方博宜1626 - 暑假的旅游计划

    2024-07-10 13:48:06       10 阅读
  9. react小白面试不得不会的20个问题——第二篇

    2024-07-10 13:48:06       11 阅读
  10. 简单滤波算法伪码

    2024-07-10 13:48:06       13 阅读