哲学原理深入.NET数据类型(1)

by admin on 2018年11月17日

一.值门类及援类型

只要您还非清楚数码触发器怎么用,或者连数据触发器是啊还还未打听,请先阅读WPF触发器之数触发器(A)。

  所有的值类型和援类型的援都存在“栈”中

1.
当你明白了数码触发器是当某个.NET属性值变化时接触的操作,比如说当数字变成了
“8”,那就是让数字变成红色。那么用多少触发器心想事成者意义就是可以如此描写:

  1.值类型

<DataTrigger Binding="{Binding RelativeSource={RelativeSource Self},Path=Text}" Value="8"> ...

    命名空间:System.ValueType

  1. 题目来了——可是,当 “DataTrigger” 的 “Value”
    是一个变量值你要怎么处置吧??

    值类型数据储存所在的内存区域改为栈

   哲学原理 1

    值类型主要概括核心数据列以及枚举类型,结构

    如果您询问了WPF绑定,你或许会见先行想到这样来窜你的代码:

    值类型的赋值原理:

<DataTrigger Binding="{Binding RelativeSource={RelativeSource Self},Path=Text}" Value="{Binding Path=RedNumber}"> ...

      在栈上复制的真实值

    运行程序,编译器会废弃来一个不当采取导致的大:

    实例代码:

    哲学原理 2

      

    哲学原理 3

            //张浩和李明去年身高都是170cm,今年李明长到了180cm,张浩没有变化,
            //输出去年和今年两人身高
            int zhheight = 170;
            int lmheigt = zhheight;
            Console.WriteLine("去年张浩身高是{0}\t李明的身高是{1}", zhheight, lmheigt);
            lmheigt = 180;
            Console.WriteLine("今年张浩身高是{0}\t李明的身高是{1}", zhheight, lmheigt);         

    此很说勿可知于 “Datatrigger” 的 “Value” 属性上使用 “Banding”
,原因是它们不是一个拄属性。只有拄属性可以使用 “Binding” 。

 

    关于这十分的详细信息,请大家自行查阅
”Binding“
和 ”因属性“
的辨证,在这边不开了多讲。

  2.引用类型

3.
这个题材,在MSDN技术论坛有人进行了探讨:如何以DataTrigger的Value中设定程序级变量?
UserControl中什么绑定窗体变量?

    命名空间:System.Onject

  1. 解决方案。

    引用类型主要包括反复组,类及接口,字符串等

    使用多复绑定,关于WPF “多复绑定”
的学问,请查看MSDN文档,在此地也未举行了多讲。查看 “多重新绑定”
请点击这里。

    储存在栈和堆中

    此问题是以无动一定的值 “8”
来展开数字革命显示引起的,而是要根据变量 “InputValue” 决定。

    堆上囤积的忠实对象自我真实对象的性质

    所以,此解决办法的规律是拿变量值 “InputValue” 和当前之值 “NowValue”
都传入某个方法,返回一个布尔值,表示 “InputValue” 和 “NowValue”
是否等于。

    示例代码:

    这样,就足以将 Value=”{Binding
Path=RedNumber}”转换为 Value=”true”,即把变化值转化为布尔值 “true”。

      

 

        int[] zhArray={170,60};
           int[] lmArray = zhArray;
            Console.WriteLine("去年张浩身高是{0},体重是{1}\t李明的身高是{2},体重是{3}", zhArray[0],zhArray[1], lmArray[0],lmArray[1]);
            Console.WriteLine("================我是高贵的分割线====================");
            lmArray[0] = 180;
           lmArray[1] = 70;
            Console.WriteLine("今年张浩身高是{0},体重是{1}\t李明的身高是{2},体重是{3}", zhArray[0], zhArray[1], lmArray[0], lmArray[1]);






        //解决:

        int[] zhArray = { 170, 60 };
            int[] lmArray = new int[2];
            for (int i = 0; i < zhArray.Length; i++)
            {
                lmArray[i] = zhArray[i];
            }
            Console.WriteLine("去年张浩身高是{0},体重是{1}\t李明的身高是{2},体重是{3}", zhArray[0], zhArray[1], lmArray[0], lmArray[1]);
            Console.WriteLine("================我是高贵的分割线======================");

            lmArray[0] = 180;
            lmArray[1] = 70;
            Console.WriteLine("今年张浩身高是{0},体重是{1}\t李明的身高是{2},体重是{3}", zhArray[0], zhArray[1], lmArray[0], lmArray[1]);

    下面被出具体步骤:

  3.细分值类型及援类型

    多重复绑定需要运用多值转换器。

类别

    <a> 首先定义一个几近值转换器类:TimeIsUpConverter。代码如下:

描述

 1 public class TimeIsUpConverter : IMultiValueConverter
 2 {
 3     public object Convert(object[] values, Type targetType, object parameter, System.Globalization.CultureInfo culture)
 4     {
 5         if (values == null)
 6             return false;
 7 
 8         string strInputValue = values[0].ToString();
 9 
10         int inputValue = 0;
11         bool inputValueIsNumber = int.TryParse(values[0].ToString(), out inputValue);
12         int nowTime = 0;
13         bool nowValueIsNumber = int.TryParse(values[1].ToString(), out nowTime);
14 
15         if (inputValueIsNumber && nowValueIsNumber)
16         {
17             return inputValue == nowTime;
18         }
19         return false;
20     }
21 
22     public object[] ConvertBack(object value, Type[] targetTypes, object parameter, System.Globalization.CultureInfo culture)
23     {
24         throw new NotImplementedException();
25     }
26 }

值类型

    <b> 在xaml文件被援刚刚定义转换器。

 基本数据列

<UserControl xmlns:views="clr-namespace:TimerWarningApp.Views" ...

<UserControl.Resources>
    <views:TimeIsUpConverter x:Key="timeIsUpConverter" />
</UserControl.Resources>

整型:int

    <c> 修改数据转换器的代码:

&长整型:long

<Style.Triggers>
    <DataTrigger>
        <DataTrigger.Binding>
            <MultiBinding Converter="{StaticResource ResourceKey=timeIsUpConverter}">
                <Binding ElementName="tbInputValue"
                         Path="Text" />
                <Binding ElementName="tbNowValue"
                         Path="Text" />
            </MultiBinding>
        </DataTrigger.Binding>
        <DataTrigger.Value>true</DataTrigger.Value>
    </DataTrigger>
</Style.Triggers>

浮点型:float

   OK,问题解决!

双精度:double

    哲学原理 4

字符型:char

 

波尔型:bool

枚举类型

枚举:enum

结构类型

结构:strut

援类型

基类:System.Object

字符串:string

自定义类:class

接口

接口:interface

数组

数组:int[],string[]

二.结构

  1.定义:

    语法:

     

         访问修饰符 struct 结构名
      {
        //结构体
      }                

      特点:

      结构面临可发字段,也得发艺术

      定义时,结构面临之字段不可知被赋予初值

    示例代码:

    

 //定一个自己的结构体
    public struct MyPointer
    {

        //成员 属性   结构体的成员变量不能有初值
        private int age;

        public int Age
        {
            get { return age; }
            set { age = value; }
        }
        //结构体中可以定义方法
        public void show() 
        {

        }

    }

 

  2.使用

    可以不要new。直接定义结构的靶子即可

      哲学原理 5

    声明结构的目标后,必须吃组织的积极分子赋初值

    示例代码:

      

     static void Main(string[] args)
        {
            //使用结构体
            MyPointer pointer=new MyPointer();
            pointer.Age = 20;
            pointer.show();
        }

  3.采用更

    不引进使用(结构用得更加多所耗费的囤空间吧越多)

三.构造函数

  哲学原理 6

   示例代码:

  public  class Player
    {
   //无参
        private Player() 
        { 
            //归类:方法(方法)/函数 (面向过程)
        }
        //有参
        public Player(string name)
        {

            //归类:方法(方法)/函数 (面向过程)
        }
    }    

 

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图