VerySource

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 989|回复: 10

关于动态取变量名的值

[复制链接]

1

主题

6

帖子

4.00

积分

新手上路

Rank: 1

积分
4.00
发表于 2020-2-17 02:00:01 | 显示全部楼层 |阅读模式
我有变量名:
private string AA = "aa";
private string BB = "bb";

public string this[string test]
{
  get
   {
程序代码
}
}
要求,如果我的test的值是AA(这里要求也上面定义的变量名相符),则返回:aa
如果是BB 则返回bb
回复

使用道具 举报

1

主题

5

帖子

6.00

积分

新手上路

Rank: 1

积分
6.00
发表于 2020-4-20 12:15:01 | 显示全部楼层
class Class1
        {
                static void Main(string[] args)
                {
                        MyList list = new MyList();
                        Console.WriteLine(list["AA"]);
                        Console.WriteLine(list["BB"]);
                }
        }

        public class MyList
        {
                System.Collections.Hashtable hash = new System.Collections.Hashtable();
                public MyList()
                {
                        hash.Add("AA","aa");
                        hash.Add("BB","bb");
                        hash.Add("CC","cc");
                }
                public string this[string str]
                {
                        get {return str + ":" + hash[str].ToString();}
                }

        }
回复

使用道具 举报

1

主题

6

帖子

4.00

积分

新手上路

Rank: 1

积分
4.00
 楼主| 发表于 2020-4-21 10:45:02 | 显示全部楼层
谢谢楼上的,我这里用的是WEB FORM
是放在MODEL里的,所以不想用HASHTABLE
看一下有没有正色好的办法呢
回复

使用道具 举报

1

主题

6

帖子

4.00

积分

新手上路

Rank: 1

积分
4.00
 楼主| 发表于 2020-4-21 19:30:01 | 显示全部楼层
自己搞定了,谢谢大家,

    private string HeiHei = "看看能不能";

    public string HeiH
    {
        get
        {
            return HeiHei;
        }
    }
    public string this[string ss]
    {
        get
        {
          return   this.GetType().GetField(ss, BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Public).GetValue(this).ToString();
        }
    }
回复

使用道具 举报

1

主题

6

帖子

4.00

积分

新手上路

Rank: 1

积分
4.00
 楼主| 发表于 2020-4-21 21:15:01 | 显示全部楼层
不知道这样会不会影响效率,这里用到了反射,如果直接用属性,两者的速度将会怎么样呢
    public string HeiH
    {
        get
        {
            return HeiHei;
        }
    }
去完成对外的取值,大家在这里讨论一下吧
回复

使用道具 举报

0

主题

9

帖子

9.00

积分

新手上路

Rank: 1

积分
9.00
发表于 2020-4-21 23:00:01 | 显示全部楼层
用反射性能肯定下降很多,为什么不想用Hashtable?
回复

使用道具 举报

0

主题

9

帖子

9.00

积分

新手上路

Rank: 1

积分
9.00
发表于 2020-4-22 10:15:01 | 显示全部楼层
这样吧,怎样?
public string this[string ss]
    {
        get
        {
            switch(ss){
            case "AA" :
                return "aa";
            case "BB" :
                return "bb";
            ...
            }
        }
    }
回复

使用道具 举报

0

主题

110

帖子

63.00

积分

新手上路

Rank: 1

积分
63.00
发表于 2020-4-22 16:30:01 | 显示全部楼层
TO:不知道这样会不会影响效率,这里用到了反射,如果直接用属性,两者的速度将会怎么样呢

用反射方法不错,效率上当然会低..

但用反射也比较灵活,如果对效率要求不是很高的话,建议还是用反射..

回复

使用道具 举报

1

主题

6

帖子

4.00

积分

新手上路

Rank: 1

积分
4.00
 楼主| 发表于 2020-4-25 18:00:02 | 显示全部楼层
谢谢,我也是正为这个事发悠呢
回复

使用道具 举报

1

主题

6

帖子

4.00

积分

新手上路

Rank: 1

积分
4.00
 楼主| 发表于 2020-4-25 23:45:01 | 显示全部楼层
在MODEINFO层用HASHTABLE好像有点行不通呀
public class CartItemInfo {

        // Internal member variables
        private int quantity = 1;
        private string itemId;
        private string name;
        private string type;
        private decimal price;
        private string categoryId;
        private string productId;

        /// <summary>
        /// Default constructor
        /// </summary>
        public CartItemInfo() { }

        /// <summary>
        /// Constructor with specified initial values
        /// </summary>
        /// <param name="itemId">Id of item to add to cart</param></param>
        /// <param name="name">Name of item</param>
        /// <param name="qty">Quantity to purchase</param>
        /// <param name="price">Price of item</param>
        /// <param name="type">Item type</param>          
        /// <param name="categoryId">Parent category id</param>
        /// <param name="productId">Parent product id</param>
        public CartItemInfo(string itemId, string name, int qty, decimal price, string type, string categoryId, string productId) {
            this.itemId = itemId;
            this.name = name;
            this.quantity = qty;
            this.price = price;
            this.type = type;
            this.categoryId = categoryId;
            this.productId = productId;
        }

        // Properties
        public int Quantity {
            get { return quantity; }
            set { quantity = value; }
        }

        public decimal Subtotal {
            get { return (decimal)(this.quantity * this.price); }
        }

        public string ItemId {
            get { return itemId; }
        }

        public string Name {
            get { return name; }
        }

        public string Type {
            get {
                return type;
            }
        }
        public decimal Price {
            get { return price; }
        }

        public string CategoryId {
            get {
                return categoryId;
            }
        }
        public string ProductId {
            get {
                return productId;
            }
        }
    }
}

我是想把这里的属性换成索引取值的方法,这样不知道会引响多大的速度呀和效率呀,同时如果用索引器的话,是不是还要事先去NEW一个呢
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|CopyRight © 2008-2023|verysource.com ( 京ICP备17048824号-1 )

快速回复 返回顶部 返回列表