<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                clone 可以用MemberwiseClone來復制一個類 但這個復制是淺復制,創建一個新的object然后復制值字段,對于引用就直接復制引用,不復制引用的本身,指向同樣引用 如果要復制引用,可以使用序列化和反序列化復制類 序列化和反序列化可以使用 序列化本來有BinaryFormatter 而現在沒有了SoapFormatter 可以用的微軟的XmlSerializer,需要`using System.Xml.Serialization;` Nuget下載很多的json Newtonsoft.Json 需要在項目管理 ![這里寫圖片描述](https://box.kancloud.cn/2016-04-08_5707636a74b4e.jpg "") 安裝 簡單的通訊錄 ~~~ public class caddressBook: notify_property { public caddressBook() { } /// <summary> /// 標識符 /// </summary> public string id { set { _id = value; OnPropertyChanged(); } get { return _id; } } /// <summary> /// 通訊人姓名 /// </summary> public string name { set { _name = value; OnPropertyChanged(); } get { return _name; } } /// <summary> /// 聯系方式 /// </summary> public string contact { set { _contact = value; OnPropertyChanged(); } get { return _contact; } } /// <summary> /// 工作地點 /// </summary> public string address { set { _address = value; OnPropertyChanged(); } get { return _address; } } /// <summary> /// 城市 /// </summary> public string city { set { _city = value; OnPropertyChanged(); } get { return _city; } } /// <summary> /// 備注 /// </summary> public string comment { set { _comment = value; OnPropertyChanged(); } get { return _comment; } } /// <summary> /// 輸入正確 /// </summary> public bool accord { set { value = false; } get { if (string.IsNullOrEmpty(name)) { return false; } return true; } } private string _id; private string _name; private string _contact; private string _address; private string _city; private string _comment; } ~~~ notify_property是通知 ~~~ public class notify_property : INotifyPropertyChanged { public notify_property() { _reminder = new StringBuilder(); } public event PropertyChangedEventHandler PropertyChanged; /// <summary> /// 一直添加value /// </summary> public string reminder { set { if (string.IsNullOrEmpty(value)) { _reminder.Clear(); } else { _reminder.Append(value + "\r\n"); } OnPropertyChanged("reminder"); } get { return _reminder.ToString(); } } public void UpdateProper<T>(ref T properValue , T newValue , [System.Runtime.CompilerServices.CallerMemberName] string properName = "") { if (object.Equals(properValue , newValue)) return; properValue = newValue; OnPropertyChanged(properName); } public void OnPropertyChanged([System.Runtime.CompilerServices.CallerMemberName] string name="") { PropertyChangedEventHandler handler = PropertyChanged; if (handler != null) { handler(this , new PropertyChangedEventArgs(name)); } } private StringBuilder _reminder; } ~~~ 復制使用MemberwiseClone ~~~ public object clone() { return this.MemberwiseClone(); } ~~~ 前臺兩個Grid,一個顯示原有的,一個顯示復制的 ~~~ <Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}"> <Grid.ColumnDefinitions> <ColumnDefinition /> <ColumnDefinition /> <ColumnDefinition Width="auto"/> </Grid.ColumnDefinitions> <Grid Grid.Column="0"> <Grid.RowDefinitions> <RowDefinition Height="auto" /> <RowDefinition Height="auto" /> </Grid.RowDefinitions> <TextBlock Text="通訊錄" HorizontalAlignment="Center"/> <Grid Grid.Row="1"> <Grid.ColumnDefinitions> <ColumnDefinition Width="auto"/> <ColumnDefinition /> </Grid.ColumnDefinitions> <Grid.RowDefinitions> <RowDefinition Height="auto" /> <RowDefinition Height="auto" /> </Grid.RowDefinitions> <TextBlock Text="id" Grid.Column="0" Grid.Row="0"/> <TextBox Text="{x:Bind view.addressBook.id,Mode=TwoWay}" Grid.Column="1" Grid.Row="0"/> <TextBlock Text="name" Grid.Column="0" Grid.Row="1"/> <TextBox Text="{x:Bind view.addressBook.name,Mode=TwoWay}" Grid.Column="1" Grid.Row="1"/> </Grid> </Grid> <Grid Grid.Column="1"> <Grid.RowDefinitions> <RowDefinition Height="auto" /> <RowDefinition Height="auto" /> </Grid.RowDefinitions> <!--<TextBlock Text="通訊錄" HorizontalAlignment="Center"/>--> <Grid Grid.Row="1"> <Grid.ColumnDefinitions> <ColumnDefinition Width="auto"/> <ColumnDefinition /> </Grid.ColumnDefinitions> <Grid.RowDefinitions> <RowDefinition Height="auto" /> <RowDefinition Height="auto" /> </Grid.RowDefinitions> <TextBlock Text="id" Grid.Column="0" Grid.Row="0"/> <TextBox Text="{x:Bind view.clone.id,Mode=TwoWay}" Grid.Column="1" Grid.Row="0"/> <TextBlock Text="name" Grid.Column="0" Grid.Row="1"/> <TextBox Text="{x:Bind view.clone.name,Mode=TwoWay}" Grid.Column="1" Grid.Row="1"/> </Grid> </Grid> <Button Grid.Column="2" Content="確定" Click="{x:Bind view.cloneaddress}"/> </Grid> ~~~ viewModel ~~~ public caddressBook addressBook { set; get; }=new caddressBook(); public caddressBook clone { set; get; } = new caddressBook(); ~~~ 在ViewModel初始給addressBook id和name一個值 ~~~ addressBook.id = "id"; addressBook.name = "name"; ~~~ 點擊按鈕復制clone值 ~~~ public void cloneaddress() { //clone = addressBook.clone() as caddressBook; caddressBook temp = new caddressBook(); temp.id = "0"; temp.name = "clone"; clone.id = temp.id; clone.name = temp.name; } ~~~ 直接復制clone會讓引用沒有指向復制的值 ~~~ public void cloneaddress() { //clone = addressBook.clone() as caddressBook; caddressBook temp = new caddressBook(); temp = addressBook.clone() as caddressBook; clone.id = temp.id; clone.name = temp.name; } ~~~ 可以復制 最笨的 ~~~ public object Clone() { caddressBook addressbook = new caddressBook(); addressbook.id = id; addressbook.name = name; addressbook.contact = contact; addressbook.address = address; addressbook.city = city; addressbook.comment = comment; return addressbook; } ~~~ ~~~ public void cloneaddress() { //clone = addressBook.clone() as caddressBook; caddressBook temp = new caddressBook(); //temp = addressBook.clone() as caddressBook; temp = addressBook.Clone() as caddressBook; clone.id = temp.id; clone.name = temp.name; } ~~~ 可以復制 序列化XmlSerializer ~~~ public object clonejson() { string str = JsonConvert.SerializeObject(this); return JsonConvert.DeserializeObject<caddressBook>(str); } ~~~ ~~~ public void cloneaddress() { //clone = addressBook.clone() as caddressBook; caddressBook temp = new caddressBook(); //temp = addressBook.clone() as caddressBook; //temp = addressBook.Clone() as caddressBook; temp = addressBook.clonejson() as caddressBook; clone.id = temp.id; clone.name = temp.name; } ~~~
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看