���̋L���͉������ł��B����o�^�i�����j����ƑS�Ă������������܂��B
�@.NET Framework�́A�K�x�[�W�E�R���N�V�����̋@�\�ɂ��A�g�p�ς݂̃������̈�������I�ɉ������B���ꂪ�P�Ȃ郁�����̈�Ȃ�A�g�p�\�ȃ������e�ʂɗ]�T���������A������ꂸ�ɕ��u�����P�[�X�������Ă�����قǖ��Ƃ͂Ȃ�Ȃ��B�������A�ɂ߂Č���ꂽ������A���ʂȓ����������������́A�g���I������炷���ɉ�����Ă��˂Εs�s�����N����ꍇ������B����1�̗�́A�t�@�C���ł���B�t�@�C�����J���ēǂݏ������邱�Ƃ͗e�Ղł��邪�A.NET Framework�ʼn��̃I�v�V�������w�肹���Ƀt�@�C�����J���Ɣr���I�ȋ��L���[�h�ɂȂ邽�߁A��������܂ł��̃t�@�C���ɃA�N�Z�X���邱�Ƃ��ł��Ȃ��Ȃ�B�܂�A�t�@�C���̓ǂݏ������I�����Ă����Ȃ��ŕ��u����ƁA�ق��̗p�r�ŊJ���Ȃ��Ƃ������Q����������B
�@�ȉ��̓t�@�C������Ȃ����Ƃɂ��s�s�����������ł���B���̏ꍇ�AOpenText���\�b�h�Ńt�@�C�����J�����Ƃ����Ƃ��ɗ�O���������Ă��܂��A�t�@�C�����J�����Ƃ��ł��Ȃ��B
StreamWriter writer = File.CreateText(@"c:\sample.txt");
writer.WriteLine("�������lj����Ă��܂��B");
StreamReader reader = File.OpenText(@"c:\sample.txt");
Console.WriteLine(reader.ReadLine());
�@���̖��ɑΏ�����ł����Ղȉ�����́A�t�@�C�������R�[�h��lj����邱�Ƃł���B
StreamWriter writer = File.CreateText(@"c:\sample.txt");
writer.WriteLine("�������lj����Ă��܂��B");
writer.Close();
StreamReader reader = File.OpenText(@"c:\sample.txt");
Console.WriteLine(reader.ReadLine());
�@����Ńv���O�����͗�O�𓊂��Ȃ��œ����悤�ɂȂ邪�A�K�ȑΏ����@�Ƃ͂����Ȃ��B�Ȃ��Ȃ�ACreateText���\�b�h�����s������ŁA���AClose���\�b�h�����s�����O�ɗ�O�Ȃǂ��N�����ď��������f����ƁA�t�@�C���������Ȃ��܂������i�s����\�������邽�߂��B
�@����ɑΏ�����ɂ́A��ʓI�ɂ͗�O������finally�\����p���āA�ȉ��̂悤�ɋL�q����B����ɂ��r���ňӐ}���Ȃ���O���������Ă��A�m����Close���\�b�h���Ăяo�����悤�ɂȂ�B
StreamWriter writer = File.CreateText(@"c:\sample.txt");
try {
writer.WriteLine("�������lj����Ă��܂��B");
} finally {
writer.Close();
}
StreamReader reader = File.OpenText(@"c:\sample.txt");
try {
Console.WriteLine(reader.ReadLine());
} finally {
reader.Close();
}
�@�������AC#�̏ꍇ�́A�ʂ̕��@������B�ȉ��̂悤�ɋL�q���Ă��A�t�@�C�����m���ɕ��邱�Ƃ��ł���B
using (StreamWriter writer = File.CreateText(@"c:\sample.txt")) {
writer.WriteLine("Sample");
}
using (StreamReader reader = File.OpenText(@"c:\sample.txt")) {
Console.WriteLine( reader.ReadLine());
}
�@����ɂ́A.NET Framework�N���X�E���C�u������IDisposable�C���^�[�t�F�[�X�iSystem���O��ԁj�ƁAC#��using�X�e�[�g�����g���W���Ă���BStreamWriter�^StreamReader�N���X�́AIDisposable�C���^�[�t�F�C�X���������Ă���̂ŁA���̃R�[�h�ɂ���Ċm���Ƀt�@�C������邱�Ƃ������ł��Ă���̂ł���B
�@�`���ł��q�ׂ��悤�ɁA.NET Framework�̓������Ǘ��������I�ɍs���B�������A����ɂ��m�ۂ��������������������邩�̓K�x�[�W�E�R���N�^����ł���B�K�R�I�Ƀf�X�g���N�^��Finallize���\�b�h���Ă��^�C�~���O���\���ł��Ȃ��B����ł͍���Ƃ����j�[�Y�̂��߂ɗp�ӂ��ꂽ�̂��AIDisposable�C���^�[�t�F�C�X�ł���B���̃C���^�[�t�F�C�X�́ADispose���\�b�h�������`���Ă���B�g���I�������m���Ɏ�����������鏈�����K�v�ȃN���X�́A���̃C���^�[�t�F�C�X���������āA����������L�q����̂�.NET Framework�ł̂��ł���B
�@�ȉ��́AIDisposable�C���^�[�t�F�C�X�����������N���X�̗�ł���B
public class SampleClass : IDisposable {
public SampleClass() {
Console.WriteLine("�������m�ۂ��܂��B");
}
public void Dispose() {
Console.WriteLine("������������܂��B");
}
}
�@���̂悤�ɁAIDisposable�C���^�[�t�F�C�X���������邷�ׂẴN���X�ł�Dispose���\�b�h���`���Ă���BIDisposable�͕��ʂ̃C���^�[�t�F�C�X�ł���ADispose�����ʂ̃��\�b�h�ł��邽�߁A���ʂȍ\���Ȃǂ͕K�v�Ȃ��B.NET Framework�̃N���X�ł���IDisposable�C���^�[�t�F�C�X���������Ă���N���X�́A���t�@�����X�E�}�j���A����IDisposable�C���^�[�t�F�C�X�̍����ŗ���Ă���B
�@���āA�I�u�W�F�N�g���j�������Ƃ��ɌĂяo�����f�X�g���N�^�ƈقȂ�ADispose���\�b�h�͒P�Ȃ郁�\�b�h�ł��邽�߁A�������Ȃ���Ήi���ɌĂяo����邱�Ƃ͂Ȃ��B�ł���{�I�Ȏg�����́A�ȉ��̂悤�ɖ����I��Dispose���\�b�h���Ăяo�����@�ł���B
SampleClass sample1 = new SampleClass();
// �����̏���
sample1.Dispose();
�@�������A����ł�Dispose���\�b�h���m���ɌĂ��ۏ��Ȃ��B�ۏ����悤��try�\����p���Ĉȉ��̂悤�ɏ������Ƃ͂ł���i��1�j�B
SampleClass sample1 = new SampleClass();
try {
// �����̏���
} finally {
sample1.Dispose();
}
�@�������A���̂悤��try�\���Ŏ��������������̂Ȃ�A���ʂ�IDisposable�C���^�[�t�F�C�X�̂��肪���݂͔����B�����ŏo�Ă���̂�using�X�e�[�g�����g�ł���B
�@C#�̃\�[�X�R�[�h�̐擪�ɂ́A�K���Ƃ����Ă悢�قǖ��O��ԏȗ����̃f�t�H���g���w�肷��uusing System;�v�̂悤�ȃR�[�h��������Ă���B�ȉ��{�e�Łuusing�v�Ƃ����L�[���[�h�ɂ��Đ������邪�A����using�X�e�[�g�����g�́A���O��Ԃ��w�肷��O�o�́uusing�v�Ƃ͈قȂ���̂ł���̂Œ��ӂ��Ă������������B�����Ŏ��グ��using�X�e�[�g�����g�͊m���ȏI���������s�����߂̂��̂ł���Busing�X�e�[�g�����g�͈ȉ��̂悤�ɂ��Ďg�p����B
using (SampleClass sample1 = new SampleClass()) {
// �����̏���
}
�@�܂��Ausing�ɑ������ʓ��ŁA�ΏۂƂȂ�I�u�W�F�N�g���w�肷��B���̗�ł́ASampleClass�N���X�̃C���X�^���X���쐬���A�����sample1�Ƃ����ϐ��̏����l�Ƃ��Ă���B�����Ŏw�肷��l�́AIDisposable�C���^�[�t�F�C�X���������Ă��Ȃ���Ȃ�Ȃ��B�����āA����ɑ����u���b�N���牽�炩�̗��R�Ŕ����o���Ƃ��ɁA�w�肳�ꂽ�I�u�W�F�N�g������Dispose���\�b�h���Ăяo�����B���̂܂������I���Ĕ�����ꍇ���������Dispose���\�b�h�͌Ă��B���ꂾ���łȂ��A�ʏ�̏������܂������s�\�ɂȂ�悤�ȋɂ߂ė�O�I�Ȏ��Ԃ������Areturn�X�e�[�g�����g�Ń��\�b�h������A��O�����������肷��ꍇ�ȂǁA�قƂ�ǂ̏ꍇ��Dispose���\�b�h�͌Ăяo�����B���̗�ł����A�ϐ�sample1�������Ă���SampleClass�N���X�̃C���X�^���X��Dispose���\�b�h���Ăяo�����B
�@���̃R�[�h����L��try�\����p�����R�[�h�i��1�j�Ƃقړ����ł���B���̂��Ƃ��番����Ƃ���Ausing�X�e�[�g�����g�͂��g�p���Ȃ��Ă������̃R�[�h���������Ƃ͂ł���B�������A�R�[�h���R���p�N�g�ɕ�����₷���d�グ��ɂ́A���ЂƂ����p�������X�e�[�g�����g�ł���Ƃ����邾�낤�B
�J�e�S���FC#�@�����ΏہF�I�u�W�F�N�g
�g�p�L�[���[�h�Fusing�X�e�[�g�����g
�g�p���C�u�����FIDisposable�C���^�[�t�F�[�X�iSystem���O��ԁj
�u.NET TIPS�v
Copyright© Digital Advantage Corp. All Rights Reserved.