返回值的类内部的c#方法

如何解决返回值的类内部的c#方法

| 目前我有一个这样的班级;
public static class drug
{
    public const double[] coc = new double[] { 156,4,8,164 };
    public const double[] mar = new double[] { 234,64,34,342 };

}
我引用它的方式是这样的:
double one = drug.coc[0];
但是我想这样引用
double one = drug.coc.var1
我如何更改我的班级以支持这一点?     

解决方法

您可以以相同的方式嵌套它...但是,您显然会失去任何数组功能。
public static class drug
{
    public static class coc
    {
        public const double var1 = 156;
        public const double var2 = 4;
        public const double var3 = 8;
        public const double var4 = 164;
    }
    public static class mar
    {
        public const double var1 = 234;
        public const double var2 = 64;
        public const double var3 = 34;
        public const double var4 = 342;
    }
}
    ,用
var1
var2
等创建
Coc
类,并用它代替
double[]
。 注意:您应该使用属性,而不是以这种方式公开字段。     ,如果您使用的是.Net 4,并且不介意将\ drug类声明为动态类,则可以从\“ DynamicObject \”继承并重载TryGetMember方法,以将传入的方法名称解析为有效索引到您的数组中。 非常快而且肮脏,而且不是您想要的,我没有时间对其进行调整,但是它可以工作。
void Main()
{
    dynamic d = new drug();

    double v1 = d.mar0; //234
    double v2 = d.mar1; //64
    double v3 = d.mar2; //34 
    double v4 = d.mar3; //342
}

public class drug : DynamicObject
{
    private double[] coc = new double[] { 156,4,8,164 };
    private double[] mar = new double[] { 234,64,34,342 };

    public override bool TryGetMember(GetMemberBinder binder,out object result)
    {
        string name = binder.Name.ToLower();
        if(name.StartsWith(\"coc\"))
        {
            result = coc[int.Parse(name.Replace(\"coc\",\"\"))];
            return true;
        }
        if(name.StartsWith(\"mar\"))
        {
            result = mar[int.Parse(name.Replace(\"mar\",\"\"))];
            return true;
        }
        result = -1;
        return false;
    }
}
    ,为了能够通过变量引用值,您必须重构您的类,以便cac变量是另一个类
public class ValueCollection
{
   public ValueCollection(double var1,double var2,double var3,double var4)
   {
      Var1 = var1;
      Var2 = var2;
      Var3 = var3;
      Var4 = var4;
   }

   public double Var1 { get; private set; }
   public double Var2 { get; private set; }
   public double Var3 { get; private set; }
   public double Var3 { get; private set; }
}
然后,您将更新原始课程:
public static class drug
{
    public ValueCollection coc = new ValueCollection(156,164);
    public ValueCollection mar = new ValueCollection(234,342);
}
    ,使其成为一个枚举:
public enum { var1=156,var2=4,var3=8 var4=164}
。我可能对语法有些了解,但这应该是一个开始。 http://msdn.microsoft.com/en-us/library/cc138362.aspx     ,能够做自己想做的事,需要事先知道您的coc集合(数组,IEnumerable等)中到底有多少双。假设您确实知道这一点,那么您仍然需要一个属性,例如coc本身将成为一个类:
public class DrugInfo
 {
    public double var1 {get;set;}
    public double var2 {get;set;}
    public double var3 {get;set;}
    public double var4 {get;set;}
 }
然后,您的新代码将如下所示:
DrugInfo coc = new DrugInfo() { 156,164 };
DrugInfo mar = new DrugInfo() { 234,342 };
然后您可以访问它,例如::14ѭ或
drug.mar.var1
。     ,我可能对您的要求不满意,但您可以像这样使用Dictionary
public Dictionary<string,double> coc = new Dictionary<string,double>()
        {
        {\"var1\",156},{\"var2\",4},{\"var3\",8}
        };
然后像这样检索值
double d = drug.coc[\"var1\"]
    

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


依赖报错 idea导入项目后依赖报错,解决方案:https://blog.csdn.net/weixin_42420249/article/details/81191861 依赖版本报错:更换其他版本 无法下载依赖可参考:https://blog.csdn.net/weixin_42628809/a
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下 2021-12-03 13:33:33.927 ERROR 7228 [ main] o.s.b.d.LoggingFailureAnalysisReporter : *************************** APPL
错误1:gradle项目控制台输出为乱码 # 解决方案:https://blog.csdn.net/weixin_43501566/article/details/112482302 # 在gradle-wrapper.properties 添加以下内容 org.gradle.jvmargs=-Df
错误还原:在查询的过程中,传入的workType为0时,该条件不起作用 &lt;select id=&quot;xxx&quot;&gt; SELECT di.id, di.name, di.work_type, di.updated... &lt;where&gt; &lt;if test=&qu
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct redisServer’没有名为‘server_cpulist’的成员 redisSetCpuAffinity(server.server_cpulist); ^ server.c: 在函数‘hasActiveC
解决方案1 1、改项目中.idea/workspace.xml配置文件,增加dynamic.classpath参数 2、搜索PropertiesComponent,添加如下 &lt;property name=&quot;dynamic.classpath&quot; value=&quot;tru
删除根组件app.vue中的默认代码后报错:Module Error (from ./node_modules/eslint-loader/index.js): 解决方案:关闭ESlint代码检测,在项目根目录创建vue.config.js,在文件中添加 module.exports = { lin
查看spark默认的python版本 [root@master day27]# pyspark /home/software/spark-2.3.4-bin-hadoop2.7/conf/spark-env.sh: line 2: /usr/local/hadoop/bin/hadoop: No s
使用本地python环境可以成功执行 import pandas as pd import matplotlib.pyplot as plt # 设置字体 plt.rcParams[&#39;font.sans-serif&#39;] = [&#39;SimHei&#39;] # 能正确显示负号 p
错误1:Request method ‘DELETE‘ not supported 错误还原:controller层有一个接口,访问该接口时报错:Request method ‘DELETE‘ not supported 错误原因:没有接收到前端传入的参数,修改为如下 参考 错误2:cannot r
错误1:启动docker镜像时报错:Error response from daemon: driver failed programming external connectivity on endpoint quirky_allen 解决方法:重启docker -&gt; systemctl r
错误1:private field ‘xxx‘ is never assigned 按Altʾnter快捷键,选择第2项 参考:https://blog.csdn.net/shi_hong_fei_hei/article/details/88814070 错误2:启动时报错,不能找到主启动类 #
报错如下,通过源不能下载,最后警告pip需升级版本 Requirement already satisfied: pip in c:\users\ychen\appdata\local\programs\python\python310\lib\site-packages (22.0.4) Coll
错误1:maven打包报错 错误还原:使用maven打包项目时报错如下 [ERROR] Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:3.2.0:resources (default-resources)
错误1:服务调用时报错 服务消费者模块assess通过openFeign调用服务提供者模块hires 如下为服务提供者模块hires的控制层接口 @RestController @RequestMapping(&quot;/hires&quot;) public class FeignControl
错误1:运行项目后报如下错误 解决方案 报错2:Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile (default-compile) on project sb 解决方案:在pom.
参考 错误原因 过滤器或拦截器在生效时,redisTemplate还没有注入 解决方案:在注入容器时就生效 @Component //项目运行时就注入Spring容器 public class RedisBean { @Resource private RedisTemplate&lt;String
使用vite构建项目报错 C:\Users\ychen\work&gt;npm init @vitejs/app @vitejs/create-app is deprecated, use npm init vite instead C:\Users\ychen\AppData\Local\npm-