�����_���ŋL�q�ł��郁���o�̑����Athrow���Aout�ϐ��A�^�v���ȂǁAC# 7�ɂ͈ȑO�����R�[�h���Ȍ��ɋL�q�ł���悤�ȋ@�\����������Ă���B
�@Visual Studio 2017�ƂƂ��Ƀ����[�X���ꂽC# 7�ɂ͑����̐V�@�\������B�����̐V�@�\�͂ǂ̂悤�ȏ�ʂŖ𗧂̂��낤���H�@3��ɂ킽���ďЉ�Ă����B
�@�R�[�h��Z���v�̂悭���������Ƃ́A�v���O���}�[�Ȃ�N�������v�����Ƃ��낤�B����́A�Ȍ��ȃR�[�f�B���O�ɖ𗧂�C# 7�̐V�@�\���Љ��B
�@�N���X�����o�̖{�̂������_���̌`�ŊȌ��ɋL�q�ł���@�\�ł���B
�@C# 6�ł́A���Ɏ��������o���Ή����Ă����B
�@C# 7�ł́A�ȉ��̃����o�ɂ��g�����ꂽ�B���悻�����郁���o�������_���ŋL�q�\�ɂȂ����Ƃ����邾�낤�B
�@�v���p�e�B��C���f�N�T�[�������_���ŋL�q����ꍇ�A�ǂݎ���p�Ȃ��C# 6�̌`�����A�ǂݏ����\�ȂƂ���get�^set���ʂɃ����_���ŏ���C# 7�̌`�����g���Ƃ悢�B
�@�v���p�e�B�������_���ŋL�q���������̃R�[�h�Ɏ����B
using System;
using System.ComponentModel;
using System.Runtime.CompilerServices;
public abstract class BindableBase : INotifyPropertyChanged
{
// INotifyPropertyChanged�C���^�t�F�[�X�̎����ƁA�w���p�[���\�b�h
public event PropertyChangedEventHandler PropertyChanged;
protected void OnPropertyChanged(string propertyName)
=> PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
protected void SetProperty<T>(ref T storage, T value,
[CallerMemberName] string propertyName = null)
{
if (object.Equals(storage, value))
return;
storage = value;
OnPropertyChanged(propertyName);
}
}
public class ABindableClass : BindableBase
{
// �ǂݏ�������v���p�e�B�́Aget�^set���ꂼ��������_���ŋL�q�ł���
private DateTimeOffset _date;
public DateTimeOffset Date
{
get => _date;
set => SetProperty(ref _date, value);
}
// �ǂݎ���p�v���p�e�B�́A���̂悤�Ȍ`�Ń����_�����g����
public string NowTime => $"{DateTimeOffset.Now:HH:mm:ss}";
// �����C# 7�ł͎��̂悤�ɏ������Ƃ��ł��邪�A�������Ē����Ȃ�
//public string NowTime
//{
// get => $"{DateTimeOffset.Now:HH:mm:ss}";
//}
}
�@����́Athrow�X�e�[�g�����g����ʂȏꏊ�ł������Ƃ��Ĉ������̂��B����������������A�ȉ��Ɏ���3�ӏ��ɂ�throw��������悤�ɂȂ����̂��B
�@���܂ł͎��`���̃����_���̒��ŗ�O�𓊂����Ȃ������B���̂��߁A��肠�����R���p�C����ʂ����߂����Ƀ����o�������Ă����Čォ�炿���Ǝ�������悤�ȏꍇ�ɂ́A���̃R�[�h�Ɏ����悤�Ȏ菇��ł����B
public string SampleMethod()
{
// �R���p�C����ʂ����߂����̉�����
// ��Ŏ�������̂�Y��Ȃ��悤�A��O�𓊂���悤�ɂ��Ă���
throw new NotImplementedException();
}
// �� �ォ�炿���Ǝ�������
public string SampleMethod()
{
return "Hello, world!";
}
// �� �����_���ɂ��ĊȌ���
public string SampleMethod() => "Hello, world!";
�@C# 7�ł́A�ŏ����烉���_���ŏ�����i���̃R�[�h�j�B
// C# 7�ł́A�ŏ����烉���_���ŏ�����
public string SampleMethod() => throw new NotImplementedException();
// �� �ォ�炿���Ǝ�������
public string SampleMethod() => "Hello, world!";
�@��Ƃ��āA������null�������Ƃ��ɁAArgumentNullException��O�iSystem���O��ԁj�ɑウ�ēƎ��̗�O�i�Ⴆ��System���O��Ԃ�ApplicationException��O�j���o�������Ƃ��悤�B
�@����܂łł���A���̃R�[�h�̂悤��null������s����throw�X�e�[�g�����g�������Ă����B
public static string Reverse(object o)
{
// null�̂Ƃ��AArgumentNullException��O�ł͂Ȃ��A�Ǝ��̗�O���o������
var s = o as string;
if (s == null)
throw new ApplicationException();
return new string(s.Reverse().ToArray());
}
�@C# 7�ł́A��̃R�[�h��null���̉��Z�q���g���ĊȌ��ɏ�����i���̃R�[�h�j�B
public static string Reverse(object o)
{
var s = o as string ?? throw new ApplicationException();
return new string(s.Reverse().ToArray());
}
�@���邢�́A�L���X�g����K�v���Ȃ��Ă���null���������ꍇ�́A���̃R�[�h�̂悤�ɏ������Z�q�i�O�����Z�q�j�̒���throw�ł���B
public static string Reverse2(string s)
=> string.IsNullOrWhiteSpace(s)
? throw new ApplicationException()
: new string(s.Reverse().ToArray());
Copyright© Digital Advantage Corp. All Rights Reserved.