首页 新闻 会员 周边 捐助

有这样一个问题,这里面的变量为什么只能开始时候赋值,再赋值没改变???求解答!!刚刚接触还不是很深入

0
悬赏园豆:50 [已解决问题] 解决于 2016-01-07 09:25

这个是第一个类,其中蓝色部分就是我要不断改变的变量,其中的 name 、sex、age、ID 是我改变的,每次这些变量的值可以改变,但是并没有把值赋给等号的左边

public class GlobalData
    {

        static GlobalData()
        {
            
            m_orderExample.m_orderDetails.Add(new OrderDetail
            {
                Sku = "1",
                Spec = "白细胞数",
                Number = "WBC",
                Unit = "6.5",
                UnitPrice = "10/L",
                Description = "4.0-10.0",
                Other = ""
            });
            m_orderExample.m_orderDetails.Add(new OrderDetail
            {
                Sku = "2",
                Spec = "淋巴细胞%",
                Number = "LY%",
                Unit = "67.8",
                UnitPrice = "%",
                Description = "20.0-40.0",
                Other = " "
            });
            m_orderExample.m_orderDetails.Add(new OrderDetail
            {
                Sku = "3",
                Spec = "单核细胞%",
                Number = "MO%",
                Unit = "6.4",
                UnitPrice = "%",
                Description = "2.0-9.0",
                Other = " "
            });
            m_orderExample.m_orderDetails.Add(new OrderDetail
            {
                Sku = "4",
                Spec = "中性粒细胞",
                Number = "NE#",
                Unit = "4.4",
                UnitPrice = "%",
                Description = "1.4-7.7",
                Other = " "
            });
            m_orderExample.m_orderDetails.Add(new OrderDetail
            {
                Sku = "5",
                Spec = "红细胞",
                Number = "RBC",
                Unit = "4.78",
                UnitPrice = "%",
                Description = "3.50-5.50",
                Other = " "
            });
            m_orderExample.m_orderDetails.Add(new OrderDetail
            {
                Sku = "6",
                Spec = "血红蛋白",
                Number = "HGB",
                Unit = "149.0",
                UnitPrice = "%",
                Description = "120-160",
                Other = " "
            });

        }

        public static OderData m_orderExample = new OderData
        {
            OrderNo = PublicData.name,
            CustomerName = PublicData.sex,
            ShipAddress = PublicData.age,
            Express = "门诊",
            Freight = PublicData.ID,
        };   
    }

这是第二个类
 public class OderData
    {
        public string OrderNo { get; set; }
        public string CustomerName { get; set; }
        public string ShipAddress { get; set; }
        public string Express { get; set; }
        public string Freight { get; set; }
      
        public List<OrderDetail> OrderDetails
        {
            get
            {
                return m_orderDetails;
            }
        }
        public List<OrderDetail> m_orderDetails = new List<OrderDetail>();

       }


    public class OrderDetail
    {
        public string Sku { get; set; }
        public string Spec { get; set; }
        public string Number { get; set; }
        public string Unit { get; set; }
        public string UnitPrice { get; set; }
        public string Description { get; set; }
        public string Other { get; set; }
    }

下面这个是函数的调用,其中蓝色的就是我不理解的地方,第一次执行这个函数时,这个对象里面的变量的值可以赋值,之后就不能改变了,这是什么原因?

FlowDocument doc = PrintPreviewWindow.LoadDocumentAndRender("OrderDocument.xaml", GlobalData.m_orderExample, new OrderDocumentRender());

这个是上面这个函数的定义:
 1 public static FlowDocument LoadDocumentAndRender(string strTmplName, Object data, IDoucumentRender renderer = null)
 2         {
 3             FlowDocument doc = (FlowDocument)Application.LoadComponent(new Uri(strTmplName, UriKind.RelativeOrAbsolute));
 4             doc.PagePadding = new Thickness(50);
 5             doc.DataContext = data;
 6             if (renderer != null)
 7             {
 8                 renderer.Render(doc, data);
 9             }
10             return doc;
11         }

 

 
UCI的主页 UCI | 初学一级 | 园豆:128
提问于:2016-01-06 14:56
< >
分享
最佳答案
0

为什么你要使用静态变量

收获园豆:50
MrNice | 老鸟四级 |园豆:3468 | 2016-01-06 16:19

我尝试了改了一下  但是用在好多别的地方了  不是静态的话 不能直接引用啊

UCI | 园豆:128 (初学一级) | 2016-01-06 16:25
其他回答(3)
0

原来只是需要这么引用变量  就可以了 

GlobalData.m_orderExample.CustomerName="老王";

UCI | 园豆:128 (初学一级) | 2016-01-07 09:25
0

代码写的太非主流啊,你使用了静态私有构造函数,这里是不是涉及单例模式呢?

不好理解,我有点搞不懂你的代码,是大哥太厉害,还是我太菜。

唉……

荆棘人 | 园豆:410 (菜鸟二级) | 2016-01-07 11:53

不  这代码不是我写的,是一个三年前的代码了,我只是个代码的搬运工,刚接触的我也是不懂,只是用到了这个功能,如果您有兴趣,这个是原版的代码 http://www.cnblogs.com/guogangj/archive/2013/02/27/2934733.html

可以一起研究一下! ^_^

支持(0) 反对(0) UCI | 园豆:128 (初学一级) | 2016-01-07 13:35
0

下面这个是函数的调用,其中蓝色的就是我不理解的地方,

第一次执行这个函数时,这个对象里面的变量的值可以赋值,之后就不能改变了,这是什么原因?

 

你怎么判断,之后就不能改变了?

ChuckLu | 园豆:514 (小虾三级) | 2016-01-12 14:23

问题解决了已经, 是我用的方法不对 ,我之前是设置断点看的值是否改变

支持(0) 反对(0) UCI | 园豆:128 (初学一级) | 2016-01-12 16:04
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册